コンテンツにスキップ

JavaScript/Array/prototype/entries

出典: フリー教科書『ウィキブックス(Wikibooks)』

Array.prototype.entries()

[編集]

Array.prototype.entries() は、配列のインデックスと要素のペアを反復処理するためのイテレータを返すメソッドです。

構文

[編集]
array.entries()

返り値

[編集]

配列の各要素の [インデックス, 値] ペアを返す Iterator オブジェクト

説明

[編集]
  • 配列の各要素について、インデックスと値のペアを順番に取得できるイテレータを生成
  • 元の配列を変更せずに反復処理が可能
  • ECMAScript 2015 (ES6) で導入されたメソッド

使用例

[編集]

基本的な使用

[編集]
const array = ['a', 'b', 'c'];
const iterator = array.entries();

console.log(iterator.next().value); // [0, 'a']
console.log(iterator.next().value); // [1, 'b']
console.log(iterator.next().value); // [2, 'c']

for...of ループでの分割代入

[編集]
const fruits = ['apple', 'banana', 'cherry'];
for (const [index, fruit] of fruits.entries()) {
    console.log(`インデックス: ${index}, 果物: ${fruit}`);
}
// 出力:
// インデックス: 0, 果物: apple
// インデックス: 1, 果物: banana
// インデックス: 2, 果物: cherry
const colors = ['red', 'green', 'blue'];
const entries = [...colors.entries()];
console.log(entries); 
// [[0, 'red'], [1, 'green'], [2, 'blue']]

特殊な動作 =

[編集]

疎な配列の場合

[編集]
const sparseArray = [1, , , 4];
const entries = [...sparseArray.entries()];
console.log(entries); 
// [[0, 1], [1, undefined], [2, undefined], [3, 4]]
// 空のスロットは undefined として扱われる

オブジェクトへの変換 =

[編集]
const array = ['a', 'b', 'c'];
const entriesObject = Object.fromEntries(array.entries());
console.log(entriesObject);
// { '0': 'a', '1': 'b', '2': 'c' }

注意点

[編集]
  • イテレータは一度しか使用できません
  • 新しい配列を生成するわけではありません
  • 空の配列に対しては空のイテレータを返します
  • インデックスと値の両方を [インデックス, 値] 形式で返します

ブラウザ互換性

[編集]
  • モダンブラウザで広くサポート
  • Internet Explorer では利用不可
  • Node.js 4.0.0 以降でサポート

関連メソッド

[編集]

仕様

[編集]
  • ECMAScript 2015 (ECMA-262)

高度な使用例

[編集]

マップへの変換

[編集]
const array = ['a', 'b', 'c'];
const entriesMap = new Map(array.entries());
console.log(entriesMap);
// Map(3) { 0 => 'a', 1 => 'b', 2 => 'c' }