js数组的findIndex和indexOf区别

2,738 阅读1分钟

转载网站:www.jianshu.com/p/14635c245…

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

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

注意: findIndex() 对于空数组,函数是不会执行的。
注意: findIndex() 并没有改变数组的原始值。【不会改变原数组中的元素】

参考文章:www.jianshu.com/p/1c15be16a…

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

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

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

3.区别:
(1)findIndex()和indexOf()实现都是通过循环遍历查找
(2)findIndex()的应用场景要比indexOf()广泛一些,可以查找大于等于小于,表达式可以随便写,indexOf就只能在第一层查找相等的值。

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