介绍 `findLast` 和 `findLastIndex`

2025-06-09

介绍 `findLast` 和 `findLastIndex`

我又回来介绍 JavaScript 语法了!目前是第二阶段,我们将讨论findLastfindLastIndex

数组.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 },
Enter fullscreen mode Exit fullscreen mode

有一个补充功能叫做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
Enter fullscreen mode Exit fullscreen mode

你可以想象为什么有人会想这么做。如果你正在寻找一个符合你需求的元素,但只需要一个,那么这非常有用,而且性能非常高。

但这只是第一次

虽然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 }
Enter fullscreen mode Exit fullscreen mode

还有配套的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
Enter fullscreen mode Exit fullscreen mode

请注意,如果找不到符合条件的元素,它将返回-1

你怎么认为?

在我看来,数组实用方法永远不会嫌多!不管我是否需要它们。但你呢?

如果您有兴趣了解更多信息,请查看提案

鏂囩珷鏉ユ簮锛�https://dev.to/laurieontech/introducing-findlast-and-findlastindex-1fan
PREV
介绍 Object.fromEntries 让我们从 Object.entries 开始 输入 Object.fromEntries 我们为什么需要它 不仅仅是对象 有一件事要注意 那就是
NEXT
我加入了盖茨比!