持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情
当我们需要在数组中查找符合一定条件的第一个元素时有多种方法,而在ES6中为数组提供了find、findInde以及findLast、findLastIndex方法,用来查找数组元素,极大方便了数组查找,下面我们来看下这几种方法的用途及其用法。
find()及findIndex()方法
find和findIndex方法是数组上的实例方法,find()方法是用来找到数组中符合条件的第一个元素,其是一个回调函数作为参数的高阶函数,数组的所有成员都会依次调用这个回调函数,直至找到第一个满足条件的元素后,才终止查找并返回找到的元素,如若数组中的所有元素都不满足条件,则会返回undefined。其基本用法如下:
const arr = [1, 2, 3]
arr.find((item) => item > 1) // 2
arr.find((item) => item > 3) // undefined
如上代码所示,通过find方法寻找数组中大于1的元素,会返回元素2;而因为数组中没有大于3的元素,所以寻找大于3的元素时会直接返回undefined。
数组的findIndex方法和find方法使用及原理基本相同,只是findIndex方法返回的是数组中第一个符合条件的元素的位置,如果数组中元素都不满足条件,则会返回-1,如下代码所示:
const arr = ['a', 'b', 'c']
arr.findIndex((item) => item === 'a') // 0
arr.findIndex((item) => item === 'aaaa') // -1
上述代码中,通过findIndex来寻找数组中第一个元素为a的元素所在位置时,会直接返回a所在的位置索引0,而如果数组中的子元素都不满足条时,则直接返回-1。
findLast()及findLastIndex()方法
上面所讲的数组的find和findIndex方法都是从数组的头部开始查找,而findLast和findLastIndex方法则是从数组的尾部开始,依次向前查找,除了只一点不同,其余均和find和findIndex方法表现一致,其基本用法如下:
const arr = [1, 2, 3]
arr.findLast((item) => item > 1) // 3
arr.findLast((item) => item > 3) // undefined
arr.findLastIndex((item) => item > 1) // 2
arr.findLastIndex((item) => item > 3) // -1