查找数组特定元素须要用到的方法就是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及以前的版本都不可兼容。对象