介绍 `findLast` 和 `findLastIndex`
我又回来介绍 JavaScript 语法了!目前是第二阶段,我们将讨论findLast
和findLastIndex
。
数组.prototype.find
我们先来谈谈一个有时会用到的数组函数find
。它是一个很好的实用方法,可以帮助你找到数组中第一个符合给定条件的元素。
const arr = [
{ letter: 'a', integer: 1 },
{ letter: 'c', integer: 2 },
{ letter: 'c', integer: 3 },
{ letter: 'd', integer: 4 },
]
arr.find(el => el.letter === 'c') // { letter: 'c', integer: 2 },
有一个补充功能叫做findIndex
。
const arr = [
{ letter: 'a', integer: 1 },
{ letter: 'c', integer: 2 },
{ letter: 'c', integer: 3 },
{ letter: 'd', integer: 4 },
]
arr.findIndex(el => el.letter === 'c') // 1
你可以想象为什么有人会想这么做。如果你正在寻找一个符合你需求的元素,但只需要一个,那么这非常有用,而且性能非常高。
但这只是第一次
虽然find
很棒,但它总是获取第一个符合条件的元素。如果你不断地将元素推送到数组中,并且想要获取符合条件的“最新”元素,会发生什么情况呢?这将是最接近末尾的元素。
有几种方法可以实现这一点。我想到的是先反转数组,然后再使用find
。但这对大型数组来说性能不佳,需要的步骤比预期的多,而且如果数组中没有匹配的元素,效果会很差。
输入findLast
。它是 的镜像函数find
,但它从数组末尾开始起作用。
const arr = [
{ letter: 'a', integer: 1 },
{ letter: 'c', integer: 2 },
{ letter: 'c', integer: 3 },
{ letter: 'd', integer: 4 },
]
arr.findLast(el => el.letter === 'c') // { key: 'c', integer: 3 }
还有配套的findLastIndex
。
const arr = [
{ letter: 'a', integer: 1 },
{ letter: 'c', integer: 2 },
{ letter: 'c', integer: 3 },
{ letter: 'd', integer: 4 },
]
arr.findLastIndex(el => el.letter === 'c') // 2
请注意,如果找不到符合条件的元素,它将返回-1
。
你怎么认为?
在我看来,数组实用方法永远不会嫌多!不管我是否需要它们。但你呢?
如果您有兴趣了解更多信息,请查看提案。
鏂囩珷鏉ユ簮锛�https://dev.to/laurieontech/introducing-findlast-and-findlastindex-1fan