JavaScript Array findLast() / findLastIndex()

findLast()findLastIndex() 是 ES2023 引入的方法。它們的功能與 find()findIndex() 非常相似,唯一的差別在於:它們是從陣列的最後一個元素開始向前搜尋。

為什麼需要 findLast?

有時候我們希望找到符合條件的「最後一個」項目(例如:紀錄檔中最後一次登入時間、陣列中最後一個大於特定數值的值)。

在過去,你可能需要先把陣列 reverse() 反轉再找,但這樣會改變原陣列或需要額外記憶體。現在可以直接使用這兩個方法。

語法 (Syntax)

ary.findLast(callback);
ary.findLastIndex(callback);
  • callback: 測試函式,會依序接收到:(當前元素, 索引, 整個陣列)。

範例

使用 findLast() 找值

假設我們有一組數字,想找到其中最後一個偶數:

const numbers = [10, 25, 30, 45, 50, 75];

const lastEven = numbers.findLast((n) => n % 2 === 0);

console.log(lastEven); // 50

提示:如果使用 find(),則會回傳 10。

使用 findLastIndex() 找索引

同樣的例子,如果我們想知道最後一個偶數所在的索引位置:

const lastEvenIndex = numbers.findLastIndex((n) => n % 2 === 0);

console.log(lastEvenIndex); // 4

特點

  • 不改動原陣列: 它們只是讀取陣列內容。
  • 回傳值:
    • findLast(): 找不到時回傳 undefined
    • findLastIndex(): 找不到時回傳 -1

總結

對於需要從右往左搜尋的場景,findLast()findLastIndex() 提供了一個直接且直覺的方式,不需要再繞道反轉陣列。