前端開發過程中,我們會經常遇到這樣的情景:比如選中某個指標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中沒有,可以添加了
