查找數組特定元素須要用到的方法就是findIndex()。es6
以上是比較官方的對於findIndex()的定義數組
第一條的意思以下: 當條件函數返回true的時候,findindex會跳出,而後返回當前元素的下標。函數
1 //首先是普通數組 2 3 var dataArr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]; 4 5 function fn(num, numIndex, nums){ 6 //該函數的三個參數,num表明當前項,numIndex表明當前項下標,nums表明該數組。 7 return num > 5; 8 } 9 10 dataArr.findIndex(fn);//值爲5(即6的下標) 11 12 ------------------------分割線----------------------------- 13 14 //一樣的假如你的數組是個對象數組: 15 var objArr = [{ 16 name: '小王', 17 age: 14 18 },{ 19 name: '大王', 20 age: 41 21 },{ 22 name: '老王', 23 age: 61 24 }] 25 26 function objFn(obj, objIndex, objs){ 27 return num.age > 20; 28 } 29 30 objArr .findIndex(objFn);//值爲1(即大王的下標)
二、第二條的意思就更好理解了,由於findindex只返回第一個符合條件的元素下標,因此在找到第一個符合條件的元素以後,他會跳出該函數,以後的數組內的元素將再也不調用,至關於加了個break;測試
假如咱們要在全部人裏面挑選隊友,可是不想重複。在咱們經過id查找的時候,就能夠這麼寫spa
var allPeple = [{ name: '小王', id: 14 },{ name: '大王', id: 41 },{ name: '老王', id: 61 }] var myTeamArr = [{ name: '小王', id: 14 }] var PId = 14; //假如這個是要添加的人的ID function pFn(p){return p.id == PId ;} //判斷myteam裏是否是有這個隊員,若是==-1 表明沒有,在allPeople中找到他,添加入個人隊伍 myTeamArr.findIndex(pFn) == -1 ? myTeamArr.push(allPeple.find(pFn)) : alert('已存在該人員'); //這樣寫能夠將兩個for循環直接總結成一行代碼
與其相對應的有find()函數,用法一致,只不過返回的是元素自己,而不是元素的下標。code
由於是es6的因此使用的時候要注意兼容性問題,ie11及以前的版本都不可兼容。對象