コンテンツにスキップ

JavaScript/Iterator/prototype

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

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は直接生成せず、以下の方法で作成されます:

コレクションメソッド

[編集]

ジェネレータ関数

[編集]
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は一方向で、巻き戻しができません
  • 一度すべての要素を取得すると、再度イテレーションできません