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] 更加清晰,特別是在你不想重複輸入變數名稱,或是在處理動態生成的陣列時,是非常方便的現代語法。