JavaScript/Set/prototype/Symbol.iterator

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

Set.prototype[Symbol.iterator]() は、Setオブジェクトの要素を反復処理するための反復子を返すメソッドです。このメソッドは、Set内の値を順番に取得するために使用されます[1]

構文

mySet[Symbol.iterator]()
  • このメソッドは引数を取りません。

Setの要素を反復処理するプログラム

以下のプログラムは、Set.prototype[Symbol.iterator]() を使用してSetの要素を反復処理します。

const mySet = new Set([1, 2, 3, 4, 5]);
const iterator = mySet[Symbol.iterator]();

console.log(iterator.next().value); // 1
console.log(iterator.next().value); // 2
console.log(iterator.next().value); // 3
console.log(iterator.next().value); // 4
console.log(iterator.next().value); // 5
console.log(iterator.next().done);  // true

このプログラムでは、Set.prototype[) を使用して mySet の反復子を取得し、next( Symbol.iterator] メソッドを呼び出して各要素を順番に取得しています。すべての要素を取得した後、done プロパティが true になります。

for...ofループを使用したSetの反復処理

以下のプログラムは、for...ofループを使用してSetの要素を反復処理します。

const mySet = new Set(['a', 'b', 'c']);

for (const value of mySet) {
  console.log(value);
}
// 出力:
// 'a'
// 'b'
// 'c'

このプログラムでは、for...ofループを使用して mySet の要素を反復処理しています。for...ofループは内部的に Symbol.iterator メソッドを呼び出して反復子を取得します。

スプレッド構文を使用したSetの配列への変換

以下のプログラムは、スプレッド構文を使用してSetを配列に変換します。

const mySet = new Set([1, 2, 3]);
const array = [...mySet];

console.log(array); // [1, 2, 3]

このプログラムでは、スプレッド構文(...)を使用して mySet を配列に変換しています。スプレッド構文も内部的に Symbol.iterator メソッドを使用しています。

注意点

  • 挿入順序: Set反復子は、要素が追加された順序で値を返します。
  • 値のみ: Mapとは異なり、Setの反復子は値のみを返します。
  • 反復中の変更: Set内の要素を反復処理中に追加または削除すると、反復子の動作が変わる可能性があります。
  • 再利用不可: 反復子は一度使い切ると、新しい反復子を取得する必要があります。

脚註

  1. これは、for...of ループなどでSetの要素を反復処理するために内部的に呼び出されます。

外部リンク

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