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