コンテンツにスキップ

JavaScript/Iterable Interface

出典: フリー教科書『ウィキブックス(Wikibooks)』


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ループで反復処理できます。

注意点

[編集]
  • 反復可能オブジェクト: ArrayStringMapSetTypedArrayargumentsオブジェクトなどは組み込みの反復可能オブジェクトです。
  • カスタムイテラブル: Symbol.iteratorメソッドを実装することで、カスタムオブジェクトを反復可能にすることができます。
  • 無限イテラブル: 無限シーケンスを生成するイテラブルを作成することもできますが、無限ループを避けるために注意が必要です。

脚註

[編集]
  1. ^これは、コレクションの要素を反復処理するために使用されます。

外部リンク

[編集]
close