前端開發過程中,我們會經常遇到這樣的情景:比如選中某個指標obj,將其加入到數組checkedArr中({id: 1234, name: 'zzz', ...}),但是在將其選中之前要校驗該指標是否已經被選擇。
以前的思路是:循環數組checkedArr,如果checkedArr[i].id===obj.id,則說明該指標已經在數組中了。
在ES6中,數組得到擴展,新增了find和findIndex兩個方法,可以用到這個情境中:
-
find()
方法返回數組中滿足提供的測試函數的第一個元素的值。否則返回undefined
。 -
findIndex()
方法返回數組中滿足提供的測試函數的第一個元素的索引。否則返回-1。
find方法:
var objArr = [{id:1, name:'jiankian'}, {id:23, name:'anan'}, {id:188, name:'superme'}, {id:233, name:'jobs'}, {id:288, name:'bill', age:89}, {id:333}] ; var ret2 = objArr.find((v) => { return v.id == 233; }); console.log(ret2); // return {id:233, name:'jobs'} // 當返回undefined時,則說明objArr中沒有,可以添加
findIndex方法:
var objArr = [{id:1, name:'jiankian'}, {id:23, name:'anan'}, {id:188, name:'superme'}, {id:233, name:'jobs'}, {id:288, name:'bill', age:89}, {id:333}] ; var ret2 = objArr.findIndex((v) => { return v.id == 233; }); console.log(ret2); // return 3 // 當返回-1時,則說明objArr中沒有,可以添加了