總結(jié)一下es6常用的數(shù)組方法find()月趟、findIndex()與filter()
find()
該方法主要應(yīng)用于查找第一個(gè)符合條件的數(shù)組元素。它的參數(shù)是一個(gè)回調(diào)函數(shù)恢口。在回調(diào)函數(shù)中可以寫(xiě)你要查找元素的條件孝宗,當(dāng)條件成立為true時(shí),返回該元素弧蝇。如果沒(méi)有符合條件的元素,返回值為undefined折砸。
以下代碼在myArr數(shù)組中查找元素值大于4的元素看疗,找到后立即返回。返回的結(jié)果為查找到的元素:
const myArr=[1,2,3,4,5,6];
var v=myArr.find(value=>value>4);
console.log(v);// 5
沒(méi)有符合元素睦授,返回undefined:
const myArr=[1,2,3,4,5,6];
var v=myArr.find(value=>value>40);
console.log(v);// undefined
回調(diào)函數(shù)有三個(gè)參數(shù)两芳。value:當(dāng)前的數(shù)組元素。index:當(dāng)前索引值去枷。arr:被查找的數(shù)組怖辆。
查找索引值為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()的使用方法相同,只是當(dāng)條件為true時(shí)findIndex()返回的是索引值删顶,而find()返回的是元素竖螃。如果沒(méi)有符合條件元素時(shí)findIndex()返回的是-1,而find()返回的是undefined逗余。findIndex()當(dāng)中的回調(diào)函數(shù)也是接收三個(gè)參數(shù)特咆,與find()相同。
const bookArr=[
{
id:1,
bookName:"三國(guó)演義"
},
{
id:2,
bookName:"水滸傳"
},
{
id:3,
bookName:"紅樓夢(mèng)"
},
{
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()使用方法也相同录粱。同樣都接收三個(gè)參數(shù)腻格。不同的地方在于返回值。filter()返回的是數(shù)組啥繁,數(shù)組內(nèi)是所有滿足條件的元素菜职,而find()只返回第一個(gè)滿足條件的元素。如果條件不滿足旗闽,filter()返回的是一個(gè)空數(shù)組酬核,而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' } ]
數(shù)組去重:
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 ]