indexOf
是 JavaScript 中的一个数组方法,用于查找数组中某个元素的第一个匹配项的索引位置。如果没有找到该元素,则返回 -1
。
array.indexOf(searchElement[, fromIndex])
searchElement
:要查找的元素。fromIndex
(可选):开始查找的位置。默认为 0
。let arr = [1, 2, 3, 4, 5];
console.log(arr.indexOf(3)); // 输出: 2
console.log(arr.indexOf(6)); // 输出: -1
console.log(arr.indexOf(3, 3)); // 输出: -1,从索引3开始查找,3不存在于该位置之后
indexOf
查找效率问题对于大型数组,indexOf
可能会比较慢,因为它需要逐个检查每个元素。
解决方法:
Set
或 Map
,它们提供了更快的查找时间。let set = new Set(arr);
console.log(set.has(3)); // 输出: true
indexOf
对于非原始类型的查找对于对象或其他复杂类型,indexOf
默认比较的是引用而不是值。
解决方法:
findIndex
方法配合自定义比较函数。let arr = [{id: 1}, {id: 2}, {id: 3}];
let target = {id: 2};
let index = arr.findIndex(item => item.id === target.id);
console.log(index); // 输出: 1
总之,indexOf
是一个简单且常用的数组方法,但在处理大型数据集或复杂类型时需要注意性能和比较方式的选择。
领取专属 10元无门槛券
手把手带您无忧上云