JavaScript/Map/prototype/Symbol.iterator

カテゴリ:Book:JavaScript#Map/prototype/Symbol.iterator%20

Map.prototype[@@iterator]() は、Map オブジェクトのエントリを反復処理するためのイテレータを返すメソッドです。このメソッドは、Map を for...of ループなどの反復処理構文で使用できるようにします[1]

構文

map[Symbol.iterator]()
  • map: 反復処理の対象となる Map オブジェクト。

for...of ループで Map を反復処理するプログラム

以下のプログラムは、for...of ループを使用して Map の各エントリを反復処理します。

const map = new Map([
  ['key1', 'value1'],
  ['key2', 'value2'],
  ['key3', 'value3']
]);

for (const entry of map) {
  console.log(entry);
}
// ['key1', 'value1']
// ['key2', 'value2']
// ['key3', 'value3']

このプログラムでは、for...of ループを使用して Map map の各エントリを反復処理しています。for...of ループは内部的に Map.prototype[@@iterator]() メソッドを使用しています。各エントリは [キー, 値] の配列として返されます。

分割代入を使用するプログラム

以下のプログラムは、分割代入を使用して Map の各キーと値を取得します。

const map = new Map([
  ['key1', 'value1'],
  ['key2', 'value2'],
  ['key3', 'value3']
]);

for (const [key, value] of map) {
  console.log(`${key}: ${value}`);
}
// "key1: value1"
// "key2: value2"
// "key3: value3"

このプログラムでは、for...of ループと分割代入を組み合わせて、Map の各エントリからキーと値を個別に取得しています。

注意点

  • エントリの順序: Map のイテレータは、要素が挿入された順序でエントリを返します。
  • entries() メソッド: Map.prototype[)Map.prototype.entries( Symbol.iterator] と同じ関数オブジェクトを参照します。
  • 配列との違い: Map のイテレータは [キー, 値] の配列を返しますが、配列のイテレータは値のみを返します。
  • 関連メソッド: Map.prototype.keys() はキーのみのイテレータを返し、Map.prototype.values() は値のみのイテレータを返します。
  • スプレッド構文: スプレッド構文 (...) は内部的にイテレータを使用するため、Map のエントリを配列に変換できます(例: [...map])。

脚註

  1. これは、Map オブジェクトの各キーと値のペアを順番に取得するために使用されます。

外部リンク

カテゴリ:Book:JavaScript#Map/prototype/Symbol.iterator%20 カテゴリ:JavaScript
カテゴリ:Book:JavaScript カテゴリ:JavaScript カテゴリ:Pages using the JsonConfig extension