12章イテレータとジェネレータ

ES2015では「イテレータ(iterator)」と「ジェネレータ(generator)」という、2つの重要な概念が新たに導入されました†1。ジェネレータはイテレータに依存しますので、まずイテレータから説明していきましょう。

[†1] iterateは「反復する」「繰り返して言う」などの意。generateは「生成する」などの意。

12.1 イテレータ

「イテレータ(反復子)」はその名前のとおり、繰り返しのための機構です。少しややこしいのですが、「イテレータ」という言葉に関連して「反復可能なオブジェクト(iterable object)」と「イテレータオブジェクト(反復子オブジェクト、iterator object)」の2つの種類のオブジェクトがあります。この2つは相反するものではなく、「反復可能かつイテレータでもあるオブジェクト」もあります。そして、通常は「イテレータオブジェクト」の意味で「イテレータ」という言葉を使います。

12.1.1 配列とイテレータ

まず、おなじみの配列とイテレータとの関係を見てみましょう。

12.1.1.1 配列は反復可能なオブジェクト

配列はイテレーション(反復)可能なオブジェクト(iterable object)です(このほか文字列、マップ、セットなども反復可能なオブジェクトです)。反復可能なオブジェクトについてはfor...ofを使って各要素について処理をすることができます。

今、bookという名前の配列があり、配列の各要素が本の内容を1ページずつ記憶しているとします。ここでは昔話を題材にしてみましょう。子供用の絵本のように、1ページに1行ずつ書かれていることにします。次のようにして全要素を順番に取り出すことができます。 ...

Get 初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.