【JavaScript ECMAScript】Set::Set.prototype[Symbol.iterator]インスタンスメソッドの使い方
Set.prototype[Symbol.iterator]()インスタンスメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
Set.prototypeSymbol.iteratorメソッドは、Setオブジェクトが保持するすべての要素を順に処理するためのイテレータオブジェクトを返すメソッドです。Setオブジェクトは重複しない値のコレクションであり、このメソッドを呼び出すことで、そのSet内の各要素にアクセスできる特別なオブジェクト(イテレータ)が得られます。
このイテレータオブジェクトは、next()メソッドを持っており、呼び出すたびにSet内の次の要素を{ value: 要素の値, done: false }の形式で返します。すべての要素が処理されると、イテレータは{ value: undefined, done: true }を返して終了を通知します。
[Symbol.iterator]は、JavaScriptの組み込みシンボルの一つで、オブジェクトがイテラブル(反復可能)であることを示すために使用されます。このシンボルをプロパティ名として持つメソッドが定義されているオブジェクトは、for...ofループやスプレッド構文(...)などのイテレーションプロトコルに対応していることになります。
したがって、SetオブジェクトはSet.prototype[Symbol.iterator]()メソッドを持つため、直接for...ofループでその要素を反復処理したり、スプレッド構文を使って配列に変換したりすることが可能です。このメソッドによって返されるイテレータは、Set.prototype.values()メソッドが返すイテレータと全く同じ動作をします。これにより、Setオブジェクトの内部構造を意識することなく、簡潔なコードでその要素を操作できるようになります。
構文(syntax)
1const mySet = new Set(['a', 'b', 'c']); 2const setIterator = mySet[Symbol.iterator](); 3 4console.log(setIterator.next().value); 5console.log(setIterator.next().value);
引数(parameters)
引数なし
引数はありません
戻り値(return)
SetIterator
Set.prototypeSymbol.iterator は、Set オブジェクトの要素を順にたどることができるイテレータオブジェクトを返します。このイテレータオブジェクトは、next() メソッドを呼び出すことで、各要素とその完了状態を取得するために使用されます。