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.