Package Exports
- iterate-iterator
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (iterate-iterator) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
iterate-iterator 
Iterate any iterable JS iterator. Works robustly in all environments, all versions.
In modern engines, [...value]
or Array.from(value)
or for (const item of value) { }
are sufficient to iterate an iterable value (an object with a Symbol.iterator
method), which includes all builtin iterators. However, older engines:
- may lack
Symbol
, array spread, orfor..of
support altogether - may have
Symbol.iterator
but not implement it on everything it should, like arguments objects - may have
Map
andSet
, but a non-standard name for the iterator-producing method (.iterator
or['@@iterator']
, eg) and no syntax to support it - may be old versions of Firefox that produce values until they throw a StopIteration exception, rather than having iteration result objects
- may be polyfilled/shimmed/shammed, with
es6-shim
orcore-js
or similar
This library simplifies iterating an iterator object, so no loops are required.
If called with a single iterator, it will return an array of the yielded values. If also called with a callback function, it will instead call that callback once for each yielded value.
Example
var iterate = require('iterate-iterator');
var getIterator = require('es-get-iterator');
var assert = require('assert');
assert.deepEqual(iterate(getIterator('a 💩')), ['a', ' ', '💩']);
assert.deepEqual(iterate(getIterator([1, 2])), [1, 2]);
assert.deepEqual(iterate(getIterator(new Set([1, 2]))), [1, 2]);
assert.deepEqual(iterate(getIterator(new Map([[1, 2], [3, 4]]))), [[1, 2], [3, 4]]);
function assertWithCallback(iterable, expected) {
var values = [];
var callback = function (x) { values.push(x); };
iterate(iterable, callback);
assert.deepEqual(values, expected);
}
assertWithCallback(getIterator('a 💩'), ['a', ' ', '💩']);
assertWithCallback(getIterator([1, 2]), [1, 2]);
assertWithCallback(getIterator(new Set([1, 2])), [1, 2]);
assertWithCallback(getIterator(new Map([[1, 2], [3, 4]])), [[1, 2], [3, 4]]);
Tests
Simply clone the repo, npm install
, and run npm test