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() 提供了一個直接且直覺的方式,不需要再繞道反轉陣列。