JavaScript Array at()
at() 方法是 ES2022 (ES12) 引入的一個新方法,它接受一個整數值作為索引,並回傳該位置的元素。
為什麼需要 at()?
在過去,我們存取陣列元素主要使用 [] 語法:
const fruits = ['Apple', 'Banana', 'Orange'];
console.log(fruits[0]); // 'Apple'
但 [] 語法有一個缺點:它不支援「負索引」。如果你想從陣列的「末端」開始數,你必須這樣寫:
// 取得最後一個元素
console.log(fruits[fruits.length - 1]); // 'Orange'
這在鏈式呼叫 (Chaining) 或陣列名稱很長時會顯得非常冗贅。at() 解決了這個問題,它允許你直接傳入負數索引。
語法 (Syntax)
ary.at(index);
- index: 零基 (zero-based) 的整數,表示要讀取的位置。
- 負數索引: 如果 index < 0,則表示從陣列末端開始倒數(例如
-1代表最後一個元素)。
範例
正索引與負索引
const colors = ['red', 'green', 'blue'];
// 正向存取
console.log(colors.at(0)); // "red"
console.log(colors.at(2)); // "blue"
// 反向存取 (最實用的部分)
console.log(colors.at(-1)); // "blue" (最後一個)
console.log(colors.at(-2)); // "green"
存取超出範圍
如果索引超出陣列範圍,at() 會回傳 undefined。
const list = [1, 2, 3];
console.log(list.at(10)); // undefined
總結
at() 的語意比 fruits[fruits.length - 1] 更加清晰,特別是在你不想重複輸入變數名稱,或是在處理動態生成的陣列時,是非常方便的現代語法。