iteragain
Version:
Javascript Iterable/Iterator/Generator-function utilities.
34 lines • 1.15 kB
JavaScript
var ZipLongestIterator = /** @class */ (function () {
function ZipLongestIterator(iterators) {
this.iterators = iterators;
this.done = new Set();
}
ZipLongestIterator.prototype[Symbol.iterator] = function () {
return this;
};
ZipLongestIterator.prototype.next = function () {
var _a;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var values = [];
for (var i = 0; i < this.iterators.length; i++) {
if (!this.done.has(i)) {
var next = (_a = this.iterators[i]).next.apply(_a, args);
if (next.done)
this.done.add(i);
values.push(next.value);
}
else
values.push(undefined);
}
if (values.length === this.done.size)
return { done: true, value: undefined };
return { value: values, done: false };
};
return ZipLongestIterator;
}());
export { ZipLongestIterator };
export default ZipLongestIterator;
//# sourceMappingURL=ZipLongestIterator.js.map