ix
Version:
The Interactive Extensions for JavaScript
37 lines (35 loc) • 1.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.zip = exports.ZipIterable = void 0;
const iterablex_js_1 = require("./iterablex.js");
const returniterator_js_1 = require("../util/returniterator.js");
/** @ignore */
class ZipIterable extends iterablex_js_1.IterableX {
constructor(sources) {
super();
this._sources = sources;
}
// eslint-disable-next-line consistent-return
*[Symbol.iterator]() {
const sourcesLength = this._sources.length;
const its = this._sources.map((x) => x[Symbol.iterator]());
while (sourcesLength > 0) {
const values = new Array(sourcesLength);
for (let index = -1; ++index < sourcesLength;) {
const result = its[index].next();
if (result.done) {
its.forEach(returniterator_js_1.returnIterator);
return undefined;
}
values[index] = result.value;
}
yield values;
}
}
}
exports.ZipIterable = ZipIterable;
function zip(...sources) {
return new ZipIterable(sources);
}
exports.zip = zip;
//# sourceMappingURL=zip.js.map