Chapter 12. Iterators and Generators
ES6 introduces two very important new concepts: iterators and generators. Generators depend on iterators, so weâll start with iterators.
An iterator is roughly analogous to a bookmark: it helps you keep track of where you are. An array is an example of an iterable object: it contains multiple things (like pages in a book), and can give you an iterator (which is like a bookmark). Letâs make this analogy concrete: imagine you have an array called book
where each element is a string that represents a page. To fit the format of this book, weâll use Lewis Carrollâs âTwinkle, Twinkle, Little Batâ from Aliceâs Adventures in Wonderland (you can imagine a childrenâs book version with one line per page):
const
book
=
[
"Twinkle, twinkle, little bat!"
,
"How I wonder what you're at!"
,
"Up above the world you fly,"
,
"Like a tea tray in the sky."
,
"Twinkle, twinkle, little bat!"
,
"How I wonder what you're at!"
,
];
Now that we have our book
array, we can get an iterator with its values
method:
const
it
=
book
.
values
();
To continue our analogy, the iterator (commonly abbreviated as it
) is a bookmark, but it works only for this specific book. Furthermore, we havenât put it anywhere yet; we havenât started reading. To âstart reading,â we call the iteratorâs next
method, which returns an object with two properties: value
(which holds the âpageâ youâre now on) and done
, which becomes true
after you read the last page. Our book is ...
Get Learning JavaScript, 3rd Edition 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.