摘要:在本教程中,我们将向您展示如何使用 JavaScript 数组 indexOf()
和 lastIndexOf()
方法来查找数组中元素的位置。
JavaScript 数组 indexOf() 方法简介
要查找数组中元素的位置,您可以使用 indexOf()
方法。此方法返回要查找的元素的第一个出现的索引,如果找不到元素,则返回 -1。
以下是 indexOf()
方法的语法。
Array.indexOf(searchElement, fromIndex)
Code language: JavaScript (javascript)
如上所示,indexOf()
方法接受两个命名参数。
searchElement
参数是要在数组中查找的元素。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)); // 1
Code language: JavaScript (javascript)
以下示例使用带有负值的 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)
假设您有以下 对象 数组,其中每个对象都有两个属性:name
和 age
。
var guests = [
{name: 'John Doe', age: 30},
{name: 'Lily Bush', age: 20},
{name: 'William Gate', age: 25}
];
Code language: JavaScript (javascript)
以下语句返回 -1
,即使 guests
数组的第一个元素和 searchElement
在 name
和 ages
属性中具有相同的值。这是因为它们是两个不同的对象。
console.log(guests.indexOf({
name: 'John Doe',
age: 30
})); // -1
Code 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)
因为 scores
数组中没有数字 50,所以以下语句返回 -1
。
console.log(scores.lastIndexOf(50));// -1
Code language: JavaScript (javascript)
在本教程中,您已经学习了如何使用 JavaScript 数组 indexOf()
和 lastIndexOf()
方法在数组中查找元素。