Set.prototype[Symbol.iterator]()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年9月.
[Symbol.iterator]()
は Set
インスタンスのメソッドで、反復処理プロトコルを実装しており、 Set
オブジェクトを、反復可能オブジェクトを期待するほとんどの構文、例えばスプレッド構文 や for...of
ループなどで利用できるようにします。これは、挿入順に集合の値を返す集合イテレーターオブジェクトを返します。
このプロパティの初期値は、Set.prototype.values
プロパティの初期値と同じ関数オブジェクトです。
試してみましょう
const set = new Set();
set.add(42);
set.add("forty two");
const iterator = set[Symbol.iterator]();
console.log(iterator.next().value);
// 予想される結果: 42
console.log(iterator.next().value);
// 予想される結果: "forty two"
構文
js
set[Symbol.iterator]()
引数
なし。
返値
Set.prototype.values()
と同じく、値の集合を生成する新しい反復可能なイテレーターオブジェクトを返します。
例
>for...of ループを使用した反復処理
このメソッドを直接呼び出す必要はほとんどないことに注意してください。[Symbol.iterator]()
メソッドの存在によって Set
オブジェクトは反復可能になり、for...of
文のような反復処理の構文は自動的にこのメソッドを呼ぶことで反復処理を行うためのイテレーターを取得できるようになります。
js
const mySet = new Set();
mySet.add("0");
mySet.add(1);
mySet.add({});
for (const v of mySet) {
console.log(v);
}
手動でイテレーターを扱う
反復処理を最大限に制御するために、返されたイテレーターオブジェクトの next()
メソッドを手動で呼び出すことも可能です。
js
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); // {}
仕様書
Specification |
---|
ECMAScript® 2026 Language Specification> # sec-set.prototype-%symbol.iterator%> |
ブラウザーの互換性
Loading…