es6陣列方法find()、findIndex()與filter()
阿新 • • 發佈:2020-07-26
find()
該方法主要應用於查詢第一個符合條件的陣列元素。它的引數是一個回撥函式。在回撥函式中可以寫你要查詢元素的條件,當條件成立為true時,返回該元素。如果沒有符合條件的元素,返回值為undefined。
以下程式碼在myArr陣列中查詢元素值大於4的元素,找到後立即返回。返回的結果為查詢到的元素:
const myArr=[1,2,3,4,5,6]; let person = myArr.find ( value => value > 4 ); console.log(person );// 5
沒有符合元素,返回undefined:
const myArr=[1,2,3,4]; let person= myArr.find ( value => value > 4 ); console.log(person );// 5
回撥函式有三個引數。value:當前的陣列元素。index:當前索引值。arr:被查詢的陣列。
查詢索引值為4的元素:
const myArr=[1,2,3,4,5,6]; let person = myArr.find ( (value,index,arr) => { return index == 4 } ); console.log(person );
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:"西遊記" } ]; let a = bookArr.findIndex((value)=>value.id==4); console.log(a);// 3 let b = bookArr.findIndex((value)=>value.id==100); console.log(b);// -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 ]