Set.prototype[@@iterator]()

Set オブジェクトの @@iterator メソッドは反復処理プロトコルを実装し、スプレッド構文for...of 文などの反復可能オブジェクトを期待するほとんどの文法で Set を利用できるようにします。@@iterator メソッドは Set の値を返す反復子を返します。

@@iterator プロパティの初期値は values プロパティの初期値と同じ関数オブジェクトです。

試してみましょう

構文

mySet[Symbol.iterator]()

返値

返値は values() 同様、Set の値を返す新しい反復可能な反復子オブジェクトです。

for..of とともに [@@iterator]() を使う

このメソッドを直接呼び出す必要はほとんどないことに注意してください。iterator メソッドの存在によって Set オブジェクトは反復可能になり、for...of 文のような反復処理の構文は自動的にこのメソッドを呼ぶことで反復処理を行うための反復子を取得できるようになります。

const mySet = new Set();
mySet.add('0');
mySet.add(1);
mySet.add({});

for (const v of mySet) {
  console.log(v);
}

手動で反復子を扱う

反復処理を最大限に制御するために、返された反復子オブジェクトの next() メソッドを手動で呼び出すことも可能です。

const mySet = new Set();
mySet.add('0');
mySet.add(1);
mySet.add({});

const setIter = mySet[Symbol.iterator]();

console.log(setIter.next().value); // "0"
console.log(setIter.next().value); // 1
console.log(setIter.next().value); // Object

仕様書

Specification
ECMAScript Language Specification
# sec-set.prototype-@@iterator

ブラウザーの互換性

BCD tables only load in the browser

関連情報