JS: Iterator
(new in ECMAScript 2015)
What is Iterator
An iterator is an object that conforms to the Iterator Interface.
Basically, has property key "next"
(own or inherited), and its value must be a function, and this function must return {done: boolean, value: value}.
Purpose of Iterator
Iterator basically serves as the mechanism to iterate over Iterable Object.
Iterator object is required as the return value of the function of
property key
Symbol.iterator
of a
Iterable Object
.
Defining an Iterator
Here is a example of defining an iterator.
// create a iterator const xiterator = {}; xiterator.i = 0; xiterator.next = () => ((xiterator.i < 3) ? { value: xiterator.i++, done: false } : { value: undefined, done: true }); // s------------------------------ // test console.log(xiterator.next()); // { value: 0, done: false } console.log(xiterator.next()); // { value: 1, done: false } console.log(xiterator.next()); // { value: 2, done: false } console.log(xiterator.next()); // { value: undefined, done: true }
Defining a Iterable with Given Iterator
Here is a example of defining a iterable from a iterator.
// create a iterator const xiterator = {}; xiterator.i = 0; xiterator.next = () => ((xiterator.i < 3) ? { value: xiterator.i++, done: false } : { value: undefined, done: true }); // create a iterable let xiterable = { [Symbol.iterator]: (() => xiterator) }; // s------------------------------ // test on iterable using spread operator console.log(...xiterable); // 0 1 2
Inherited Key βnextβ
Here is an example showing a iterator with inherited key "next".
// create a iterator const aa = {}; aa.i = 0; aa.next = () => ((aa.i < 3) ? { value: aa.i++, done: false } : { value: undefined, done: true }); // create object bb, with parent aa. // bb is now also a iterator const bb = Object.create(aa); // create a iterable, using bb let xiterable = { [Symbol.iterator]: (() => bb) }; // s------------------------------ // test on iterable using spread operator console.log(JSON.stringify([...xiterable]) === `[0,1,2]`); // true
JavaScript. Iterable, Iterator
- JS: Iterable Object
- JS: for-of Loop
- JS: Array.from
- JS: Spread Operator (triple dots)
- JS: Iterator
- JS: Iterator.prototype
- JS: Generator
- JS: Generator Function (asterisk)
- JS: Interface
- JS: Iterable Interface
- JS: Iterator Interface
- JS: IteratorResult Interface
- JS: Test If Object is Iterable or Iterator π