foop
Version:
interfaces that describe their intentions.
42 lines (38 loc) • 2.97 kB
JavaScript
var preAllocate = require('../array/preAllocate')
/**
* @desc convert an iterator into an array using
* @since 5.0.0-beta.6
* @memberOf cast
*
* @name iteratorToArray
* @alias arrayFromIterator
*
* @param {Iterator} iter iterator
* @return {Array<*>} iterator values
*
* {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators mozilla-iterators-and-generators}
* @see {@link mozilla-iterators-and-generators}
* @see symbols/iterator
* @see array/preAllocate
*
* @example
*
* const map = new Map(Object.entries({eh: true}))
*
* iteratorToArray(map.keys())
* //=> ['eh']
*
* iteratorToArray(new Set([0, 1]).keys())
* //=> [0, 1]
*
*/
module.exports = function iteratorToArray(iter) {
var list = preAllocate(iter)
var next
var index = 0
while (!(next = iter.next()).done && index++) {
list[index] = next.value
}
return list
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlcmF0b3JUb0FycmF5LmpzIiwic291cmNlcyI6WyJpdGVyYXRvclRvQXJyYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgcHJlQWxsb2NhdGUgPSByZXF1aXJlKCcuLi9hcnJheS9wcmVBbGxvY2F0ZScpXG5cbi8qKlxuICogQGRlc2MgY29udmVydCBhbiBpdGVyYXRvciBpbnRvIGFuIGFycmF5IHVzaW5nXG4gKiBAc2luY2UgNS4wLjAtYmV0YS42XG4gKiBAbWVtYmVyT2YgY2FzdFxuICpcbiAqIEBuYW1lIGl0ZXJhdG9yVG9BcnJheVxuICogQGFsaWFzIGFycmF5RnJvbUl0ZXJhdG9yXG4gKlxuICogQHBhcmFtICB7SXRlcmF0b3J9IGl0ZXIgaXRlcmF0b3JcbiAqIEByZXR1cm4ge0FycmF5PCo+fSBpdGVyYXRvciB2YWx1ZXNcbiAqXG4gKiB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9HdWlkZS9JdGVyYXRvcnNfYW5kX0dlbmVyYXRvcnMgbW96aWxsYS1pdGVyYXRvcnMtYW5kLWdlbmVyYXRvcnN9XG4gKiBAc2VlIHtAbGluayBtb3ppbGxhLWl0ZXJhdG9ycy1hbmQtZ2VuZXJhdG9yc31cbiAqIEBzZWUgc3ltYm9scy9pdGVyYXRvclxuICogQHNlZSBhcnJheS9wcmVBbGxvY2F0ZVxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogICAgY29uc3QgbWFwID0gbmV3IE1hcChPYmplY3QuZW50cmllcyh7ZWg6IHRydWV9KSlcbiAqXG4gKiAgICBpdGVyYXRvclRvQXJyYXkobWFwLmtleXMoKSlcbiAqICAgIC8vPT4gWydlaCddXG4gKlxuICogICAgaXRlcmF0b3JUb0FycmF5KG5ldyBTZXQoWzAsIDFdKS5rZXlzKCkpXG4gKiAgICAvLz0+IFswLCAxXVxuICpcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpdGVyYXRvclRvQXJyYXkoaXRlcikge1xuICBjb25zdCBsaXN0ID0gcHJlQWxsb2NhdGUoaXRlcilcbiAgbGV0IG5leHRcbiAgbGV0IGluZGV4ID0gMFxuXG4gIHdoaWxlICghKG5leHQgPSBpdGVyLm5leHQoKSkuZG9uZSAmJiBpbmRleCsrKSB7XG4gICAgbGlzdFtpbmRleF0gPSBuZXh0LnZhbHVlXG4gIH1cblxuICByZXR1cm4gbGlzdFxufVxuIl0sIm5hbWVzIjpbImNvbnN0IiwibGV0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkJuRCxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsZUFBZSxDQUFDLElBQUksRUFBRTtFQUM5Q0EsR0FBSyxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO0VBQzlCQyxHQUFHLENBQUMsSUFBSTtFQUNSQSxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUM7O0VBRWIsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTtJQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUs7R0FDekI7O0VBRUQsT0FBTyxJQUFJO0NBQ1o7In0=