查找数组特定元素需要用到的方法就是findIndex()

用法与定义

  • findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。
  • findIndex() 方法为数组中的每个元素都调用一次函数执行:
    当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置之后的值不会再调用 执行函数。
    如果没有符合条件的元素返回 -1

以上是比较官方的对于findIndex()的定义


接下来我结合实例来进行自己的解释.

  1. 第一条的意思如下:
    当条件函数返回true的时候,findindex会跳出,然后返回当前元素的下标。
//首先是普通数组var dataArr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];function fn(num, numIndex, nums){//该函数的三个参数,num代表当前项,numIndex代表当前项下标,nums代表该数组。return num > 5;
}dataArr.findIndex(fn);//值为5(即6的下标)------------------------分割线-----------------------------//同样的假如你的数组是个对象数组:
var objArr = [{name: '小王',age: 14
},{name: '大王',age: 41
},{name: '老王',age: 61
}]                  function objFn(obj, objIndex, objs){return num.age > 20;
}objArr .findIndex(objFn);//值为1(即大王的下标)
  1. 第二条的意思就更好理解了,因为findindex只返回第一个符合条件的元素下标,所以在找到第一个符合条件的元素之后,他会跳出该函数,之后的数组内的元素将不再调用,相当于加了个break;

实际用法举例

假如我们要在所有人里面挑选队友,但是不想重复。在我们通过id查找的时候,就可以这么写

var allPeple = [{name: '小王',id: 14
},{name: '大王',id: 41
},{name: '老王',id: 61
}]var myTeamArr = [{name: '小王',id: 14
}]var PId = 14; //假如这个是要添加的人的IDfunction pFn(p){return p.id == PId ;}//判断myteam里是不是有这个队员,如果==-1 代表没有,在allPeople中找到他,添加入我的队伍myTeamArr.findIndex(pFn) == -1 ? myTeamArr.push(allPeple.find(pFn)) : alert('已存在该人员');//这样写可以将两个for循环直接总结成一行代码

另外需要补充的一点

与其相对应的有find()函数,用法一致,只不过返回的是元素本身,而不是元素的下标。

兼容性

因为是es6的所以使用的时候要注意兼容性问题,ie11及之前的版本都不可兼容。

ES6 对象数组查找某一个对象相关推荐

  1. es6对象数组按指定指定属性数组排序

    let arr = let a = [ {name:"dema", id:'23-ba'}, {name:"xiya", id:'44-ba'}, {name: ...

  2. 8.0 C++远征:对象数组

    2-1对象数组 1.实例化一个对象数组: // 定义一个类,横坐标.纵坐标 class Coordinate{public:int m_iX;int m_iY; } // 在堆中实例化一个对象数组: ...

  3. mysql rowdatapacket_arrays – 将此RowDataPacket对象数组缩小为单个对象

    我正在使用node.js 我在下面有这个RowDataPacket对象数组; { _ID: 4, _NAME: "Switch4", _CASE_COUNTER: 1, _CASE ...

  4. es6 数组找最大值_在对象数组中查找属性的最大值

    我正在寻找一种非常快速,干净且有效的方法来获取以下JSON切片中的最大" y"值: [ { "x": "8/11/2009", " ...

  5. ES6——对象、数组、字符串、数值新增API

    目录 一.对象API扩展 1.Object.is() 2.Object.assign() 3.获取原型对象的方法 4.设置原型对象的方法 5.keys.values.entries.fromEntri ...

  6. 通过ID在JavaScript对象数组中查找对象

    本文翻译自:Find object by id in an array of JavaScript objects I've got an array: 我有一个数组: myArray = [{'id ...

  7. js对象数组根据某一属性查找对象

    js对象数组[{name: "zhangsan", age: 20}, {name: "lisi", age: 30}], 如果想查找name是zhangsan ...

  8. 【ES6】数组方法--查找元素find()、findIndex()

    有一堆数据在数组里,如果想要查找其中符合条件的第一个元素出来,应该怎么做呢? 方法有很多,这里介绍两个ES6新增的查找元素方法. find()用于查找数组的符合条件的第一个元素,比如在一个数组中,我想 ...

  9. 「后端小伙伴来学前端了」Vue中 this.$set的用法 | 可用于修改对象中数组的某一个对象、 可用于更新数据到视图

    夜晚有明月,梦里有佳人 前言 最近在写老师布置的vue项目,真的说实话,每天真就是在百度.google.bing等各个搜索引擎之间反复横跳,不然就是掘金搜一搜.思否搜一搜,还有CSDN看一看.我的前端 ...

  10. 向一个对象数组里面添加新的属性 + 将一个对象数组数据拿出来变成另一个对象

    向一个对象数组里面添加新的属性 var arry= [{a:11,b:22,c:33,d:44},{a:11,b:0,c:0,d:44},{a:11,b:22,c:99,d:99}]; var arr ...

最新文章

  1. 记录智能指针使用shared_ptr使用错误
  2. centos7grub配置文件及排错
  3. jsp项目放入宝塔windows环境_《鸡站群组》-教你建站(1.1) 下载并配置windows宝塔面板...
  4. 后台系统可扩展性学习笔记
  5. 深信服C/C++技术一面二面20180924
  6. python+selenium获取cookie session_Python Selenium模拟登录成功后,使用此cookie、利用requests库进行get时,提示“非法登陆”。...
  7. Mr.J--贪吃蛇demo
  8. python 装饰器的讲解
  9. JavaWeb之Servlet:Cookie 和 Session
  10. nandflash移植程序_韦东山鸿蒙移植01-移植RTOS需要做的事
  11. Autodesk 3DSMax 2016 安装注册说明
  12. opencv26:霍夫直线变换
  13. 2021-08-30-全排列-逆序数-排列的奇偶性
  14. 哪里有模板建站配云服务器销售,模板建站配云服务器费用
  15. 活码二维码(动态二维码)素材库管理教程
  16. 发布一款新闻资讯软件(android版)
  17. 动作游戏的战斗系统设计
  18. 我的K均值算法的matlab实现
  19. 快消供应链管理解决方案
  20. RSI指标的原理和计算方法

热门文章

  1. Typecho 将评论头像从Gravatar改成显示QQ头像
  2. 不同因子影响下的不同情境的世界气温预测(的辣鸡tkinter UI可视化DEMO)
  3. 时间管理技巧(清理一波文件 感觉这个还是有用的 )
  4. 交换机access接口
  5. navicat mysql server has gone away_Navicat中MySQL server has gone away错误怎么办
  6. 计算机教室云教学反思,《云》音乐教学反思
  7. Manjaro-KDE安装动态桌面插件
  8. python爬虫爬取豆瓣电影评分排行榜前n名的前n页影评
  9. ESP8266开发之旅 基础篇⑤ ESP8266 SPI通信和I2C通信
  10. 服务器加什么网站才打开快,如何优化让网站打开速度更快些呢?