Array.prototype.indexOf()
基线 广泛可用
此功能已完善,可在许多设备和浏览器版本中使用。它自 2015 年 7 月.
报告反馈
试一试
语法
js
indexOf(searchElement)
indexOf(searchElement, fromIndex)
参数
searchElement
-
要查找的数组中的元素。
fromIndex
可选-
要开始搜索的从零开始的索引,转换为整数。
- 负索引从数组末尾开始反向计数——如果
-array.length <= fromIndex < 0
,则使用fromIndex + array.length
。请注意,在这种情况下,数组仍然是从前往后搜索的。 - 如果
fromIndex < -array.length
或fromIndex
被省略,则使用0
,导致搜索整个数组。 - 如果
fromIndex >= array.length
,则不会搜索数组,并且返回-1
。
- 负索引从数组末尾开始反向计数——如果
返回值
searchElement
在数组中的第一个索引;如果未找到,则为 -1
。
描述
The indexOf()
method compares searchElement
to elements of the array using strict equality (the same algorithm used by the ===
operator). NaN
values are never compared as equal, so indexOf()
always returns -1
when searchElement
is NaN
.
indexOf()
方法使用 稀疏数组 中的空插槽跳过。
The indexOf()
method is generic. It only expects the this
value to have a length
property and integer-keyed properties.
示例
使用 indexOf()
以下示例使用 indexOf()
在数组中定位值。
js
const array = [2, 9, 9];
array.indexOf(2); // 0
array.indexOf(7); // -1
array.indexOf(9, 2); // 2
array.indexOf(2, -1); // -1
array.indexOf(2, -3); // 0
您不能使用 indexOf()
搜索 NaN
。
js
const array = [NaN];
array.indexOf(NaN); // -1
查找元素的所有出现位置
js
const indices = [];
const array = ["a", "b", "a", "c", "a", "d"];
const element = "a";
let idx = array.indexOf(element);
while (idx !== -1) {
indices.push(idx);
idx = array.indexOf(element, idx + 1);
}
console.log(indices);
// [0, 2, 4]
查找元素是否在数组中存在,并更新数组
js
function updateVegetablesCollection(veggies, veggie) {
if (veggies.indexOf(veggie) === -1) {
veggies.push(veggie);
console.log(`New veggies collection is: ${veggies}`);
} else {
console.log(`${veggie} already exists in the veggies collection.`);
}
}
const veggies = ["potato", "tomato", "chillies", "green-pepper"];
updateVegetablesCollection(veggies, "spinach");
// New veggies collection is: potato,tomato,chillies,green-pepper,spinach
updateVegetablesCollection(veggies, "spinach");
// spinach already exists in the veggies collection.
在稀疏数组上使用 indexOf()
您不能使用 indexOf()
搜索稀疏数组中的空插槽。
js
console.log([1, , 3].indexOf(undefined)); // -1
在非数组对象上调用 indexOf()
The indexOf()
method reads the length
property of this
and then accesses each property whose key is a nonnegative integer less than length
.
js
const arrayLike = {
length: 3,
0: 2,
1: 3,
2: 4,
3: 5, // ignored by indexOf() since length is 3
};
console.log(Array.prototype.indexOf.call(arrayLike, 2));
// 0
console.log(Array.prototype.indexOf.call(arrayLike, 5));
// -1
规范
规范 |
---|
ECMAScript 语言规范 # sec-array.prototype.indexof |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。