このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
Array.prototype.at()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2022年3月.
at() はArray インスタンスのメソッドで、整数値を受け取り、そのインデックスにある項目を返します。正の整数値と負の整数値が使用できます。負の整数は、配列の最後の項目から前へ数えます。
In this article
試してみましょう
const array = [5, 12, 8, 130, 44];let index = 2;console.log(`${index} のインデックスは ${array.at(index)} を返します`);// 予想される結果: "2 のインデックスは 8 を返します"index = -2;console.log(`${index} のインデックスは ${array.at(index)} を返します`);// 予想される結果: "-2 のインデックスは 130 を返します"構文
at(index)引数
返値
配列の中で指定されたインデックスに一致する要素です。index < -array.length またはindex >= array.length の場合は、対応するプロパティにアクセスしようとせず、常にundefined を返します。
解説
at() メソッドは、index が負の整数でない場合、ブラケット記法と等価です。例えば、array[0] とarray.at(0) は、どちらも最初の項目を返します。しかし、配列の末尾から要素を数える場合、 Python や R のようにarray[-1] を使用することはできません。角括弧内の値はすべて文字列プロパティとしてリテラルで扱われるため、結局、配列のインデックスではなく通常の文字列プロパティであるarray["-1"] を読むことになります。
通常、length にアクセスし、そこからインデックスを計算します。例えば、array[array.length - 1] のようになります。at() メソッドでは相対インデックスが可能なので、これを短縮してarray.at(-1) とすることができます。
at() とwith() を組み合わせることで、負のインデックスを用いた配列の読み取りと書き込みが(それぞれ)できます。
at() メソッドは汎用的です。this 値にlength プロパティと整数キーのプロパティがあることだけを期待します。
例
>配列の末尾の値を返す
以下の例は、指定された配列の中で最後に見つかった要素を返す関数を提供します。
// 項目付きの配列const cart = ["りんご", "バナナ", "なし"];// 指定された配列の最後の項目を返す関数function returnLast(arr) { return arr.at(-1);}// 配列 'cart' の最後の項⽬を取得するconst item1 = returnLast(cart);console.log(item1); // 'なし'// 配列 'cart' に商品を追加cart.push("みかん");const item2 = returnLast(cart);console.log(item2); // 'みかん'メソッドの比較
この例では、Array の最後から 1 つ目の項目を選択するさまざまな方法を比較しています。以下に示すどの方法も有効ですが、at() メソッドの簡潔さと読みやすさが際立っています。
// 項目付きの配列const colors = ["red", "green", "blue"];// length プロパティの使用const lengthWay = colors[colors.length - 2];console.log(lengthWay); // 'green'// slice() メソッドを使用。配列を返すことに注意。const sliceWay = colors.slice(-2, -1);console.log(sliceWay[0]); // 'green'// at() メソッドを使用const atWay = colors.at(-2);console.log(atWay); // 'green'配列以外のオブジェクトでの at() の呼び出し
at() メソッドは、this のlength プロパティを読み込んで、アクセスする添字を計算します。
const arrayLike = { length: 2, 0: "a", 1: "b", 2: "c", // length が 2 なので at() からは無視される};console.log(Array.prototype.at.call(arrayLike, 0)); // "a"console.log(Array.prototype.at.call(arrayLike, 2)); // undefined仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.at> |