JavaScript/Iterator/prototype
< JavaScript | Iterator
Iterator.prototype
編集Iterator.prototype
は、JavaScript言語における反復可能なオブジェクトのプロトタイプインターフェースを定義します。
概要
編集Iterator(イテレータ)は、JavaScriptにおけるコレクションやデータストリームを順次処理するための標準的な方法を提供するオブジェクトです。
プロトタイプメソッド
編集next()
編集イテレータの次の値を取得するための基本的なメソッドです。
- 戻り値
- オブジェクト
{ value: any, done: boolean }
value
: 現在の要素の値done
: イテレーションが完了したかどうかを示すブール値
使用例
編集// 配列からイテレータを取得 const iterator = ['a', 'b', 'c'].values(); console.log(iterator.next()); // { value: 'a', done: false } console.log(iterator.next()); // { value: 'b', done: false } console.log(iterator.next()); // { value: 'c', done: false } console.log(iterator.next()); // { value: undefined, done: true }
return()
編集イテレーションを早期に終了し、最終値を返すメソッドです。
- パラメータ
value
(オプション): 返される値
使用例
編集const iterator = [1, 2, 3].values(); console.log(iterator.return()); // { value: undefined, done: true }
throw()
編集イテレータ内でエラーを発生させるメソッドです。
- パラメータ
error
: 発生させる例外オブジェクト
使用例
編集function* generatorFunction() { try { yield 1; yield 2; } catch (e) { console.log('エラーをキャッチ:', e); } } const iterator = generatorFunction(); iterator.next(); // { value: 1, done: false } iterator.throw(new Error('カスタムエラー')); // エラーをキャッチ: Error: カスタムエラー
生成方法
編集Iteratorは直接生成せず、以下の方法で作成されます:
コレクションメソッド
編集Array.prototype.values()
Map.prototype.keys()
Map.prototype.values()
Map.prototype.entries()
Set.prototype.values()
ジェネレータ関数
編集function* numberGenerator() { yield 1; yield 2; yield 3; } const iterator = numberGenerator();
反復可能プロトコル
編集Iteratorは、Symbol.iterator
メソッドを実装することで、for...of
ループや分割代入など、JavaScriptの反復処理機能と連携できます。
ブラウザサポート
編集モダンなブラウザと最新のJavaScriptエンジンで広くサポートされています。古いブラウザでは、トランスパイラやポリフィルが必要な場合があります。
メソッド
編集Iterator.prototype.constructor
編集Iterator.prototype.drop
編集Iterator.prototype.every
編集Iterator.prototype.filter
編集Iterator.prototype.find
編集Iterator.prototype.flatMap
編集Iterator.prototype.forEach
編集Iterator.prototype.map
編集Iterator.prototype.reduce
編集Iterator.prototype.some
編集Iterator.prototype.take
編集Iterator.prototype.toArray
編集関連概念
編集注意点
編集- Iteratorは一方向で、巻き戻しができません
- 一度すべての要素を取得すると、再度イテレーションできません