需求:查找数组内元素6是否存在
let arr = [1, 3, 6, 5, 7, 6];
方法1、indexOf方法
从左往右查找,找到返回索引,找不到返回-1
let index1 = arr.indexOf(6);
console.log(index1);//2
方法2、lastIndexOf方法
从右至左查找,找到返回索引,找不到返回-1
let index2 = arr.lastIndexOf(6);
console.log(index2);//5
方法3、includes方法
从左往右查找,找到返回true,找不到返回false
let resulr = arr.includes(6);
console.log(resulr);//true
方法4、数组专用方法findIndex
findIndex方法:定制版的indexOf,找到返回索引,找不到返回-1
let index3 = arr.findIndex(function (currentValue, currentIndex, currentArray) {
if (currentValue === 6){
return true;
}
});
console.log(index3);//2
方法5、数组专用方法find
find方法:返回找到的元素值,找不到返回undefined
let value = arr.find(function (currentValue, currentIndex, currentArray) {
// console.log(currentValue, currentIndex, currentArray);
if (currentValue === 6){
return true;
}
});
console.log(value);
find方法的实现原理
可以参照:数组的遍历 文章中最下面forEach实现方法。
Array.prototype.myFind = function (fn) {
for (let i = 0; i < this.length; i++) {//this:谁调用就是谁。arr数组调用的就是这个数组。
fn(this[i], i, this);
}
};
arr.myFind(function (currentValue, currentIndex, currentArray) {
console.log(currentValue, currentIndex, currentArray);
});
注意点:findIndex实现方法与上述方法类似。