不同点:
find()
- 符合条件时:返回数组中符合条件的
第一个元素的值(之后的值不会再调用执行函数); - 不符合条件时:返回
undefined;
findIndex()
- 符合条件时:返回数组中符合条件的
第一个元素位置(之后的值不会再调用执行函数); - 不符合条件时:返回
-1;
filter()
- 符合条件时:返回数组中符合条件的
所有元素。(之后的值不会再调用执行函数); - 不符合条件时:返回
空数组;
相同点:
- find()、findIndex()、filter()为对于空数组,函数是不会执行的;
- 不改变数组的原始值;
- 语法: array.find(function(currentValue, index, arr),thisValue)
currentValue:必需。当前可选。当前元素的索引元素 index:可选。当前元素的索引 arr:可选。当前元素所属的数组对象 thisValue:可选。 传递给函数的值一般用 "this" 值。如果这个参数为空, "undefined" 会传递给 "this" 值
代码实践:
find()
let arr=[0,1,2,1,3,4,5,6,7]
//在数组中查找元素大于3的值
let resulta = arr.find(item => item > 3)
//在数组中查找元素小于0的值
let resultb = arr.find(item => item < 0)
//在数组中查到元素下标是3的值
let resultc = arr.find((value,index,arr)=>{
return index == 3
});
console.log(resulta)//4
console.log(resultb)//undefined
console.log(resultc)//1
console.log(arr)//(9) [0, 1, 2, 1, 3, 4, 5, 6, 7]
findIndex()
const arr=[
{
id:1,
dis:"星期一"
},
{
id:2,
dis:"星期二"
},
{
id:3,
dis:"星期三"
},
{
id:4,
dis:"星期四"
},
{
id:5,
dis:"星期五"
}
];
var result1=arr.findIndex((item)=>item.id==4);
console.log(result1);// 3
var result2=arr.findIndex((item)=>item.id==100);
console.log(result2);// -1
filter()
const arr=[
{
id:1,
dis:"星期一"
},
{
id:2,
dis:"星期二"
},
{
id:3,
dis:"星期三"
},
{
id:4,
dis:"星期四"
},
{
id:5,
dis:"星期五"
}
];
let a = arr.filter(item => item.id > 2);
let b = arr.filter(item => item.id > 5);
console.log(a);//[{id:3,dis:"星期三"},{id:4,dis:"星期四"},{id:5,dis:"星期五"}]
console.log(b);//[]
文章参考处:
https://blog.csdn.net/u012149969/article/details/82843652
https://www.runoob.com/jsref/jsref-find.html
https://www.runoob.com/jsref/jsref-findindex.html
https://www.runoob.com/jsref/jsref-filter.html