返回

ECMAScript 2023 数组新方法:解剖 findLast 和 findLastIndex

前端

ECMAScript 2023 数组新方法:findLast 和 findLastIndex

ECMAScript 2023 为 JavaScript 数组引入了两个新的方法:findLastfindLastIndex。这些方法使开发人员能够从数组的末尾开始搜索特定元素或满足特定条件的元素。

findLast 方法

findLast 方法返回数组中最后一个匹配指定条件的元素。如果数组中没有匹配的元素,则返回 undefined

语法

findLast(callbackfn[, thisArg])

参数

  • callbackfn :要应用于数组中每个元素的函数。该函数接受三个参数:
    • element :当前正在处理的数组元素。
    • index :当前正在处理的数组元素的索引。
    • array :正在被操作的数组。
  • thisArg :可选参数。指定 callbackfnthis 值。

返回值

  • 返回数组中最后一个匹配 callbackfn 条件的元素。
  • 如果数组中没有匹配的元素,则返回 undefined

示例

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const lastEvenNumber = numbers.findLast((number) => number % 2 === 0);

console.log(lastEvenNumber); // 10

findLastIndex 方法

findLastIndex 方法返回数组中最后一个匹配指定条件的元素的索引。如果数组中没有匹配的元素,则返回 -1

语法

findLastIndex(callbackfn[, thisArg])

参数

  • callbackfn :要应用于数组中每个元素的函数。该函数接受三个参数:
    • element :当前正在处理的数组元素。
    • index :当前正在处理的数组元素的索引。
    • array :正在被操作的数组。
  • thisArg :可选参数。指定 callbackfnthis 值。

返回值

  • 返回数组中最后一个匹配 callbackfn 条件的元素的索引。
  • 如果数组中没有匹配的元素,则返回 -1

示例

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const lastEvenNumberIndex = numbers.findLastIndex((number) => number % 2 === 0);

console.log(lastEvenNumberIndex); // 9

findLast 和 findLastIndex 的优势

findLastfindLastIndex 方法具有以下优势:

  • 高效性 :这两个方法都是高效的,即使在处理大型数组时也是如此。
  • 易用性 :这两个方法非常易于使用。它们具有简单的语法,并且可以与其他数组方法轻松组合使用。
  • 通用性 :这两个方法可以用于各种不同的场景,包括查找数组中最后一个匹配特定条件的元素、查找数组中最后一个等于特定值的元素,以及查找数组中最后一个满足特定条件的元素。

findLast 和 findLastIndex 的局限性

findLastfindLastIndex 方法也有一些局限性:

  • 不适用于稀疏数组 :这两个方法不适用于稀疏数组。如果数组中存在空洞(即未定义的元素),则这两个方法可能会返回不正确的结果。
  • 不支持并行处理 :这两个方法不支持并行处理。如果需要在多核处理器上并行处理数组,则需要使用其他方法。

findLast 和 findLastIndex 的实际应用

findLastfindLastIndex 方法可以用于各种不同的实际应用中,包括:

  • 查找数组中最后一个匹配特定条件的元素
  • 查找数组中最后一个等于特定值的元素
  • 查找数组中最后一个满足特定条件的元素
  • 从数组中删除最后一个匹配特定条件的元素
  • 将最后一个匹配特定条件的元素替换为新元素