ES6数组方法find()、findIndex()与filter()的总结

ES6数组方法find()、findIndex()与filter()的总结,用一次爽一次,一直用一直爽系列,用vue开发的话ES6是必须得掌握的技能,不说了我先去学习了~

find()

该方法主要应用于查找第一个符合条件的数组元素。它的参数是一个回调函数。在回调函数中可以写你要查找元素的条件,当条件成立为true时,返回该元素。如果没有符合条件的元素,返回值为undefined

// 在testArr数组中查找元素值大于4的元素,找到后立即返回。返回的结果为查找到的元素:
const testArr=[1,2,3,4,5,6];
var v=testArr.find(value=>value>4);
console.log(v);// 5

// 没有符合元素,返回undefined:
const testArr=[1,2,3,4,5,6];
var v=testArr.find(value=>value>40);
console.log(v);// undefined

// 回调函数有三个参数。value:当前的数组元素。index:当前索引值。arr:被查找的数组。
const testArr=[1,2,3,4,5,6];
var v=testArr.find((value,index,arr)=>{
    return index==4;
});
console.log(v);// 5

findIndex()

findIndex()与find()的使用方法相同,只是当条件为true时findIndex()返回的是索引值,而find()返回的是元素。如果没有符合条件元素时findIndex()返回的是-1,而find()返回的是undefined。findIndex()当中的回调函数也是接收三个参数,与find()相同

const testArr=[
    {
        id:1,
        name:"测试一"
    },
    {
        id:2,
        name:"测试二"
    },
    {
        id:3,
        name:"测试三"
    },
    {
        id:4,
        name:"测试四"
    }
];
var a=testArr.findIndex((value)=>value.id==4);
console.log(a);// 3
var b=testArr.findIndex((value)=>value.id==10);
console.log(b);// -1

filter()

filter()与find()使用方法也相同。同样都接收三个参数。不同的地方在于返回值。filter()返回的是数组,数组内是所有满足条件的元素,而find()只返回第一个满足条件的元素。如果条件不满足,filter()返回的是一个空数组,而find()返回的是undefined

var testArr = [
    {id:1, name:"u1"},
    {id:2, name:"u2"},
    {id:3, name:"u3"}
]
console.log(testArr .filter(item=>item.id>1));
// [{ id: 2, name: 'u2'},{ id: 3, name: 'u3'}]

扩展一个数组去重

var testArr = [1,3,4,5,6,3,7,4];
console.log(testArr.filter((value,index,arr)=>arr.indexOf(value)===index));
//[ 1, 3, 4, 5, 6, 7]

猜你喜欢

发表评论

最新发布