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及以前的版本都不可兼容。对象

相关文章
相关标签/搜索