JavaScript/Array/prototype/keys
Array.prototype.keys()
Array.prototype.keys()
は、配列のインデックスを反復処理するためのイテレータを返すメソッドです。
構文
array.keys()
返り値
配列のインデックスを順次返す Iterator オブジェクト
説明
- 配列の各要素のインデックスを順番に取得できるイテレータを生成
- 元の配列を変更せずに反復処理が可能
- ECMAScript 2015 (ES6) で導入されたメソッド
使用例
基本的な使用
const array = ['a', 'b', 'c']; const iterator = array.keys(); console.log(iterator.next().value); // 0 console.log(iterator.next().value); // 1 console.log(iterator.next().value); // 2
for...of ループでの使用
const array = ['x', 'y', 'z']; for (const key of array.keys()) { console.log(key); // 0, 1, 2 を順に出力 }
インデックスと値の同時取得
const array = ['apple', 'banana', 'cherry']; for (const [index, value] of array.entries()) { console.log(`インデックス: ${index}, 値: ${value}`); } // 出力: // インデックス: 0, 値: apple // インデックス: 1, 値: banana // インデックス: 2, 値: cherry
スプレッド構文との併用
const array = ['x', 'y', 'z']; const keys = [...array.keys()]; console.log(keys); // [0, 1, 2]
特殊な動作 =
疎な配列の場合
const sparseArray = [1, , , 4]; const keys = [...sparseArray.keys()]; console.log(keys); // [0, 1, 2, 3] // 空のスロットも通常のインデックスとして扱われる
注意点
- イテレータは一度しか使用できません
- 新しい配列を生成するわけではありません
- 空の配列に対しては空のイテレータを返します
- インデックスのみを返し、実際の値は返しません
ブラウザ互換性
- モダンブラウザで広くサポート
- Internet Explorer では利用不可
- Node.js 4.0.0 以降でサポート
関連メソッド
仕様
- ECMAScript 2015 (ECMA-262)