Skip to content

Commit

Permalink
2023/09/16 時点の英語版に同期
Browse files Browse the repository at this point in the history
  • Loading branch information
mfuji09 committed Nov 1, 2023
1 parent a3edac1 commit 48ce2bd
Showing 1 changed file with 15 additions and 9 deletions.
24 changes: 15 additions & 9 deletions files/ja/web/javascript/reference/global_objects/array/at/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ l10n:

{{JSRef}}

**`at()`** メソッドは整数値を受け取り、その位置にある項目を返します。正の整数値と負の整数値が使用できます。負の整数は、配列の最後の項目から前へ数えます。
**`at()`** は {{jsxref("Array")}} インスタンスのメソッドで、整数値を受け取り、その位置にある項目を返します。正の整数値と負の整数値が使用できます。負の整数は、配列の最後の項目から前へ数えます。

{{EmbedInteractiveExample("pages/js/array-at.html")}}

Expand All @@ -24,14 +24,16 @@ at(index)

### 返値

配列の中で指定された位置に一致する要素です。`index < -array.length` または `index >= array.length` の場合は、対応するプロパティにアクセスしようとせず、常に {{jsxref('undefined')}} を返します。
配列の中で指定された位置に一致する要素です。`index < -array.length` または `index >= array.length` の場合は、対応するプロパティにアクセスしようとせず、常に {{jsxref("undefined")}} を返します。

## 解説

`at()` メソッドは、`index` が負でない場合、ブラケット記法と等価です。例えば、`array[0]``array.at(0)` は、どちらも最初の項目を返します。しかし、配列の末尾から要素を数える場合、PythonやRのように `array[-1]` を使用することはできません。角括弧内の値はすべて文字列プロパティとしてリテラルに扱われるため、結局、配列のインデックスではなく通常の文字列プロパティである `array["-1"]` を読むことになります。

通常、{{jsxref("Array/length", "length")}} にアクセスし、そこからインデックスを計算します。例えば、 `array[array.length - 1]` のようになります。 `at()` メソッドでは相対インデックスが可能なので、これを短縮して `array.at(-1)` とすることができます。

`at()` と {{jsxref("Array/with", "with()")}} を組み合わせることで、負のインデックスを用いた配列の読み取りと書き込みが(それぞれ)できます。

`at()` メソッドは[汎用的](/ja/docs/Web/JavaScript/Reference/Global_Objects/Array#generic_array_methods)です。`this` 値に `length` プロパティと整数キーのプロパティがあることだけを期待します。

##
Expand Down Expand Up @@ -61,7 +63,7 @@ console.log(item2); // 'みかん'

### メソッドの比較

この例では、 {{jsxref('Array')}} の最後から 1 つ目の項目を選択するさまざまな方法を比較しています。以下に示すどの方法も有効ですが、`at()` メソッドの簡潔さと読みやすさが際立っています。
この例では、 {{jsxref("Array")}} の最後から 1 つ目の項目を選択するさまざまな方法を比較しています。以下に示すどの方法も有効ですが、`at()` メソッドの簡潔さと読みやすさが際立っています。

```js
// 項目付きの配列
Expand Down Expand Up @@ -89,8 +91,10 @@ const arrayLike = {
length: 2,
0: "a",
1: "b",
2: "c", // length が 2 なので at() からは無視される
};
console.log(Array.prototype.at.call(arrayLike, -1)); // "b"
console.log(Array.prototype.at.call(arrayLike, 0)); // "a"
console.log(Array.prototype.at.call(arrayLike, 2)); // undefined
```

## 仕様書
Expand All @@ -104,8 +108,10 @@ console.log(Array.prototype.at.call(arrayLike, -1)); // "b"
## 関連情報

- [`Array.prototype.at` のポリフィル (`core-js`)](https://github.com/zloirock/core-js#relative-indexing-method)
- [at() メソッドのポリフィル](https://github.com/tc39/proposal-relative-indexing-method#polyfill).
- {{jsxref("Array.prototype.find()")}} – 指定されたテストに基づく値を返します。
- {{jsxref("Array.prototype.includes()")}} – 配列に値が存在するかどうかを判定します。
- {{jsxref("Array.prototype.indexOf()")}} – 指定された要素の添字を返します。
- [インデックス付きコレクション](/ja/docs/Web/JavaScript/Guide/Indexed_collections)
- [インデックス付きコレクション](/ja/docs/Web/JavaScript/Guide/Indexed_collections)ガイド
- {{jsxref("Array")}}
- {{jsxref("Array.prototype.findIndex()")}}
- {{jsxref("Array.prototype.indexOf()")}}
- {{jsxref("Array.prototype.with()")}}
- {{jsxref("TypedArray.prototype.at()")}}
- {{jsxref("String.prototype.at()")}}

0 comments on commit 48ce2bd

Please sign in to comment.