總結一下es6常用的數組方法find()、findIndex()與filter()
find()
該方法主要應用於查找第一個符合條件的數組元素。它的參數是一個回調函數。在回調函數中可以寫你要查找元素的條件,當條件成立爲true時,返回該元素。如果沒有符合條件的元素,返回值爲undefined。
以下代碼在myArr數組中查找元素值大於4的元素,找到後立即返回。返回的結果爲查找到的元素:
const myArr=[1,2,3,4,5,6];
var v=myArr.find(value=>value>4);
console.log(v);// 5
沒有符合元素,返回undefined:
const myArr=[1,2,3,4,5,6];
var v=myArr.find(value=>value>40);
console.log(v);// undefined
回調函數有三個參數。value:當前的數組元素。index:當前索引值。arr:被查找的數組。
查找索引值爲4的元素:
const myArr=[1,2,3,4,5,6];
var v=myArr.find((value,index,arr)=>{
return index==4
});
console.log(v);// 5
findIndex()
findIndex()與find()的使用方法相同,只是當條件爲true時findIndex()返回的是索引值,而find()返回的是元素。如果沒有符合條件元素時findIndex()返回的是-1,而find()返回的是undefined。findIndex()當中的回調函數也是接收三個參數,與find()相同。
const bookArr=[
{
id:1,
bookName:"三國演義"
},
{
id:2,
bookName:"水滸傳"
},
{
id:3,
bookName:"紅樓夢"
},
{
id:4,
bookName:"西遊記"
}
];
var i=bookArr.findIndex((value)=>value.id==4);
console.log(i);// 3
var i2=bookArr.findIndex((value)=>value.id==100);
console.log(i2);// -1
filter()
filter()與find()使用方法也相同。同樣都接收三個參數。不同的地方在於返回值。filter()返回的是數組,數組內是所有滿足條件的元素,而find()只返回第一個滿足條件的元素。如果條件不滿足,filter()返回的是一個空數組,而find()返回的是undefined
var userArr = [
{ id:1,userName:"laozhang"},
{ id:2,userName:"laowang" },
{ id:3,userName:"laoliu" },
]
console.log(userArr.filter(item=>item.id>1));
//[ { id: 2, userName: 'laowang' },{ id: 3, userName: 'laoliu' } ]
數組去重:
var myArr = [1,3,4,5,6,3,7,4];
console.log(myArr.filter((value,index,arr)=>arr.indexOf(value)===index));
//[ 1, 3, 4, 5, 6, 7 ]