findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。

findIndex() 方法为数组中的每个元素都调用一次函数执行:

  • 当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
  • 如果没有符合条件的元素返回 -1

注意: findIndex() 对于空数组,函数是不会执行的。

注意: findIndex() 并没有改变数组的原始值。

代码实例:


indexOf() 方法可返回数组中某个指定的元素位置。

该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。

如果在数组中没找到指定元素则返回 -1。

代码实例:


index

/ Production steps of ECMA-262, Edition 5, 15.4.4.14
// Reference: http://es5.github.io/#x15.4.4.14
if (!Array.prototype.indexOf) {Array.prototype.indexOf = function(searchElement, fromIndex) {var k;// 1. Let O be the result of calling ToObject passing//    the this value as the argument.if (this == null) {throw new TypeError('"this" is null or not defined');}var O = Object(this);// 2. Let lenValue be the result of calling the Get//    internal method of O with the argument "length".// 3. Let len be ToUint32(lenValue).var len = O.length >>> 0;// 4. If len is 0, return -1.if (len === 0) {return -1;}// 5. If argument fromIndex was passed let n be//    ToInteger(fromIndex); else let n be 0.var n = +fromIndex || 0;if (Math.abs(n) === Infinity) {n = 0;}// 6. If n >= len, return -1.if (n >= len) {return -1;}// 7. If n >= 0, then Let k be n.// 8. Else, n<0, Let k be len - abs(n).//    If k is less than 0, then let k be 0.k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);// 9. Repeat, while k < lenwhile (k < len) {// a. Let Pk be ToString(k).//   This is implicit for LHS operands of the in operator// b. Let kPresent be the result of calling the//    HasProperty internal method of O with argument Pk.//   This step can be combined with c// c. If kPresent is true, then//    i.  Let elementK be the result of calling the Get//        internal method of O with the argument ToString(k).//   ii.  Let same be the result of applying the//        Strict Equality Comparison Algorithm to//        searchElement and elementK.//  iii.  If same is true, return k.if (k in O && O[k] === searchElement) {return k;}k++;}return -1;};

对比:

1、findIndex()和indexOf方法实现都是通过循环遍历查找。

2、findIndex()的应用场景要比indexOf广泛一些,可以查找大于等于小于,表达式可以随便写,indexOf就只能在第一层查找相等的值。

3、findIndex()实际上相当于一个for循环,只不过找到了你不需要自己退出。

js数组的findIndex和indexOf对比相关推荐

  1. js 数组 堆栈 和 buckets 效率 对比

    原文链接: js 数组 堆栈 和 buckets 效率 对比 上一篇: vue 算法可视化 汉诺塔加强版 下一篇: mnist 转换为record 使用tf data 转换 读取 训练 定义和用法 s ...

  2. Js数组灵魂拷问之indexof 和sort

    function flat(arr){arr = arr.flat(Infinity);let arr1=[]for(let i=0;i<arr.length;i++){if(arr1.inde ...

  3. js数组遍历方法总结与对比

    目录 总结 一.常规方法 for的4种写法 while 二.ES6方法 for...of,得到每项元素 for...in,得到的是数组索引 三.数组实例上的遍历方法 forEach(),得到每一项元素 ...

  4. js数组中indexOf和findIndex的区别

    1. indexOf 语法 arr.indexOf(searchElement[, fromIndex]) 参数 searchElement  要查找的元素 fromIndex (可选 )  开始查找 ...

  5. JS中集合对象(Array、Map、Set)及类数组对象的使用与对比

    JS中集合对象(Array.Map.Set)及类数组对象的使用与对比 在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java ...

  6. js 数组遍历方法详解(map、filter、find、findIndex、reduce)

    目录 前言 map map是什么 map方法的结构及入参 语法糖 map一般不改变原数组 filter 说明 例子 find 和 findIndex 说明 例子 reduce 说明 例子 尾言 前言 ...

  7. js数组查找方法 find() findIndex() - Kaiqisan

    js数组查找方法 find() findIndex() ヤッハロー.Kaiqisanすうう.一つふつうの学生プログラマである,今天继续讲讲数组查询方法,,这俩方法更加适合于数组. 没错,就是数组专用的 ...

  8. JS数组去重之indexOf去重

    思路:创建一个新数组newArr,遍历旧数组arr,拿旧数组的数arr[i]来查询新数组,如果新数组里没有这个数,则将这个数添加到新数组里,查询新数组用的是indexOf,是否等于-1,等于则说明新数 ...

  9. 你真的了解JS数组的那些方法吗?

    寄语: JS数组的方法非常的丰富和琐碎,学习和使用过程中总是需要反复的记忆.查看文档,但作为JS基础这样真的不应该,我们应该把它记得滚瓜烂熟,深入理解才对. 但是要怎样才能做到呢?这正是我也本文的初衷 ...

最新文章

  1. 本科计算机专业考北大软微,2022北京大学软微学院计算机智能科技考研必看经验指导(含复试解析)...
  2. 方法传递java_Java 程序将方法作为参数传递给其他方法
  3. JavaScript优化基本篇
  4. ITK:写一个TIFF图像
  5. 标签的宽度_27 表格标签
  6. Video4Linux
  7. android 编译luajit,Android 嵌入 LuaJIT 的曲折道路
  8. 教你如何一篇博客读懂设计模式之—--工厂模式
  9. 底部按钮吸附_知乎的药丸按钮(二)我的 iOS 实现
  10. paip.复制文件 文件操作 api的设计uapi java python php 最佳实践
  11. 双创项目_宫颈癌风险智能检测(2)
  12. 康托尔集合论-罗素悖论-公理化集合论-不完全性定理
  13. 修改cnn梯度下降——MEO方法应用
  14. 【学习笔记】人工智能相关概念
  15. 根据经纬度定位百度地图(带图片的)
  16. 专升本英语——语法知识体系(入门部分)
  17. 既然Talk is cheap, 那么就用代码教你如何进行正交设计
  18. SAAS产品有哪些优缺点?
  19. 从《沙丘》到《三体》,科幻IP影视化改编究竟难在哪?
  20. 记录一下自己学习网络安全的过程

热门文章

  1. Java数据结构——Java语言下的链表
  2. php vue 跨域请求数据6,Vue跨域请求问题解决方案过程解析
  3. 个人工具开发【卡片式记忆-面试题】v.1.0.0
  4. hisiv3519交叉编译live555
  5. js模拟群聊场景-聊天信息动态出现效果
  6. MacOS下无法打开软件。原因apple无法检查其是否包含恶意软件。解决办法
  7. java aes pbe_Java加密技术(三)——PBE算法
  8. aria-hidden=true是什么意思 aria代表什么
  9. 高新技术企业认证工作网站
  10. 女人十怕!!!男人十怕