数组方法:find() 、findIndex() 、filter()

543 阅读1分钟

不同点:

find()

  1. 符合条件时:返回数组中符合条件的第一个元素的值(之后的值不会再调用执行函数);
  2. 不符合条件时:返回undefined;

findIndex()

  1. 符合条件时:返回数组中符合条件的第一个元素位置(之后的值不会再调用执行函数);
  2. 不符合条件时:返回-1;

filter()

  1. 符合条件时:返回数组中符合条件的所有元素。(之后的值不会再调用执行函数);
  2. 不符合条件时:返回空数组;

相同点:

  1. find()、findIndex()、filter()为对于空数组,函数是不会执行的;
  2. 不改变数组的原始值;
  3. 语法: 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