JavaScript 数组 indexOf 和 lastIndexOf:在数组中查找元素

摘要:在本教程中,我们将向您展示如何使用 JavaScript 数组 indexOf()lastIndexOf() 方法来查找数组中元素的位置。

JavaScript 数组 indexOf() 方法简介

要查找数组中元素的位置,您可以使用 indexOf() 方法。此方法返回要查找的元素的第一个出现的索引,如果找不到元素,则返回 -1。

以下是 indexOf() 方法的语法。

Array.indexOf(searchElement, fromIndex)
Code language: JavaScript (javascript)

如上所示,indexOf() 方法接受两个命名参数。

  1. searchElement 参数是要在数组中查找的元素。
  2. fromIndex 是函数开始搜索的数组索引。

fromIndex 参数可以是正整数或负整数。如果 fromIndex 参数为负数,则 indexOf() 方法从数组长度加上 fromIndex 开始搜索。

如果您省略 fromIndex 参数,则 indexOf() 方法从字符串开头开始搜索。

请注意,indexOf() 方法使用 严格相等比较算法,该算法类似于三等号运算符 (===),用于将 searchElement 与数组中的元素进行比较。

JavaScript 数组 indexOf() 方法示例

假设您有一个名为 scores 的数组,它包含六个数字,如下所示

var scores = [10, 20, 30, 10, 40, 20];Code language: JavaScript (javascript)

以下示例使用 indexOf() 方法查找 scores 数组中的元素

console.log(scores.indexOf(10)); // 0
console.log(scores.indexOf(30)); // 2
console.log(scores.indexOf(50)); // -1
console.log(scores.indexOf(20)); // 1Code language: JavaScript (javascript)

JavaScript Array indexOf Method Example

以下示例使用带有负值的 fromIndex()

console.log(scores.indexOf(20,-1)); // 5 (fromIndex = 6+ (-1) = 5)
console.log(scores.indexOf(20,-5)); // 1 (fromIndex = 6+ (-5) = 1)Code language: JavaScript (javascript)

假设您有以下 对象 数组,其中每个对象都有两个属性:nameage

var guests = [
    {name: 'John Doe', age: 30},
    {name: 'Lily Bush', age: 20},
    {name: 'William Gate', age: 25}
];Code language: JavaScript (javascript)

以下语句返回 -1,即使 guests 数组的第一个元素和 searchElementnameages 属性中具有相同的值。这是因为它们是两个不同的对象。

console.log(guests.indexOf({
    name: 'John Doe',
    age: 30
})); // -1Code language: JavaScript (javascript)

有时,您希望查找数组中元素的所有出现的索引。以下 find() 函数使用 indexOf() 方法来实现这一点。

function find(needle, haystack) {
    var results = [];
    var idx = haystack.indexOf(needle);
    while (idx != -1) {
        results.push(idx);
        idx = haystack.indexOf(needle, idx + 1);
    }
    return results;
}Code language: JavaScript (javascript)

以下示例使用上面的 find() 函数返回 scores 数组中数字 10 的位置数组。

console.log(find(10,scores)); // [0, 3]Code language: JavaScript (javascript)

JavaScript 数组 lastIndexOf() 方法

Array 类型还有另一个名为 lastIndexOf() 的方法,它提供与 indexOf() 方法类似的功能。

以下是 lastIndexOf() 方法的语法

Array.lastIndexOf(searchElement[, fromIndex = Array.length - 1])Code language: JavaScript (javascript)

lastIndexOf() 方法返回 searchElement 在数组中最后一次出现的索引。如果找不到元素,则返回 -1

indexOf() 方法不同,lastIndexOf() 方法从 fromIndex 开始向后搜索元素。

以下语句返回 scores 数组中数字 10 和 20 的最后索引。

console.log(scores.lastIndexOf(10));// 3
console.log(scores.lastIndexOf(20));// 5
Code language: JavaScript (javascript)

JavaScript Array lastIndexOf Method Example

因为 scores 数组中没有数字 50,所以以下语句返回 -1

console.log(scores.lastIndexOf(50));// -1Code language: JavaScript (javascript)

在本教程中,您已经学习了如何使用 JavaScript 数组 indexOf()lastIndexOf() 方法在数组中查找元素。

本教程是否有帮助?