ES6 對象數組查找某一個對象

查找數組特定元素須要用到的方法就是findIndex()。es6

用法與定義

  • findIndex() 方法返回傳入一個測試條件(函數)符合條件的數組第一個元素位置
  • findIndex() 方法爲數組中的每一個元素都調用一次函數執行: 當數組中的元素在測試條件時返回 true 時, findIndex() 返回符合條件的元素的索引位置,以後的值不會再調用 執行函數。 若是沒有符合條件的元素返回 -1

以上是比較官方的對於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及以前的版本都不可兼容。對象

相關文章
相關標籤/搜索