数组中搜索元素
indexOf/lastIndexOf与includes
indexOf() 方法可以返回某个指定的元素在数组中首次出现的位置,如果不存在,则返回 -1。
indexOf(元素, [fromIndex = 0]) 复制代码
- 元素:指定的元素。(也就是我们需要查找的元素)
- formIndex:指定的起始位置。(默认为 0),位置为数组的下标。
lastIndexOf() 方法可以返回某个指定的元素在数组中最后出现的位置,如果不存在,则返回 -1。
lastIndexOf(元素, [fromIndex = array.length - 1]) 复制代码
- 元素:指定的元素。(也就是我们需要查找的元素)
- formIndex:指定的起始位置。(默认为数组的长度 - 1),位置为数组的下标。(此时查找方向为从后往前)
includes() 方法可以判断某个指定的元素是否存在于数组中,如果存在,则返回 true,否则返回 false。
includes(元素, [fromIndex = 0]) 复制代码
- 元素:指定的元素。(也就是我们需要查找的元素)
- formIndex:指定的起始位置。(默认为 0),位置为数组的下标。
find/findIndex/findLastIndex
当我们需要查找一个对象数组中的元素,我们应该如何找到特定对象的元素呢?
这时候就可以使用arr.find
语法,它可以返回第一个符合条件的元素。
find() 方法可以在数组中找到第一个符合条件的元素,如果没有找到,则返回 undefined。
let result = arr.find(function(item,index,array)){ //如果返回true,则返回该元素,并停止迭代。 //对于假值的情况(false),否则返回undefined } 复制代码
- item:当前遍历的元素。
- index:当前遍历的元素的索引。
- array:当前遍历的数组。(也就是数组本省)
arr.findIndex()
方法与find()
方法类似,只不过它返回符合条件的元素的索引,而不是返回元素本身。
arr.findLastIndex()
方法与findIndex()
方法类似,只不过它是从右向左搜索,有点类似于lastIndexOf
。
filter
filter()
方法返回一个由所有符合条件的元素组成的新数组。
find
方法和filter
方法的区别在于,find
方法只返回第一个符合条件的元素,而filter
方法返回所有符合条件的元素(数组形式)。
let results = arr.filter(function(item, index, array) { // 如果 true,那么 item 被 push 到 results,迭代继续 // 如果什么都没找到,则返回空数组 });