JavaScript/Iterable Interface
表示
The Iterable Interface
は、オブジェクトが反復可能であることを示すインターフェースです。このインターフェースを実装するオブジェクトは、for...of
ループなどのイテレーション操作で使用できます[1]。
構文
[編集][Symbol.iterator](){/* ... */}
[Symbol.iterator]
: イテレータオブジェクトを返すメソッド。
例
[編集]反復可能オブジェクトを作成するプログラム
[編集]以下のプログラムは、Iterable
インターフェースを実装して反復可能なオブジェクトを作成します。
constiterableObj={data:[1,2,3,4,5],[Symbol.iterator](){letindex=0;return{next:()=>{if(index<this.data.length){return{value:this.data[index++],done:false};}else{return{done:true};}}};}};for(constvalueofiterableObj){console.log(value);// 1, 2, 3, 4, 5}
このプログラムでは、Symbol.iterator
メソッドを実装して反復可能なオブジェクトを作成しています。for...of
ループを使用してオブジェクトを反復処理することができます。
組み込み反復可能オブジェクトを使用するプログラム
[編集]以下のプログラムは、JavaScriptの組み込み反復可能オブジェクトを使用します。
conststr="Hello";constarray=[1,2,3];constmap=newMap([["a",1],["b",2]]);constset=newSet([1,2,3]);for(constcharofstr){console.log(char);// "H", "e", "l", "l", "o"}for(constnumofarray){console.log(num);// 1, 2, 3}for(const[key,value]ofmap){console.log(key,value);// "a" 1, "b" 2}for(constitemofset){console.log(item);// 1, 2, 3}
このプログラムでは、文字列、配列、Map、Setなどの組み込み反復可能オブジェクトを使用しています。これらのオブジェクトはIterable
インターフェースを実装しているため、for...of
ループで反復処理できます。
注意点
[編集]- 反復可能オブジェクト:
Array
、String
、Map
、Set
、TypedArray
、arguments
オブジェクトなどは組み込みの反復可能オブジェクトです。 - カスタムイテラブル:
Symbol.iterator
メソッドを実装することで、カスタムオブジェクトを反復可能にすることができます。 - 無限イテラブル: 無限シーケンスを生成するイテラブルを作成することもできますが、無限ループを避けるために注意が必要です。
脚註
[編集]- ^これは、コレクションの要素を反復処理するために使用されます。