Skip to content

Instantly share code, notes, and snippets.

@alexnoz
Forked from abozhilov/.js
Last active December 12, 2017 05:38
Show Gist options
  • Save alexnoz/0629be30c1ad04ab2acdc37060bdfe8d to your computer and use it in GitHub Desktop.
Save alexnoz/0629be30c1ad04ab2acdc37060bdfe8d to your computer and use it in GitHub Desktop.
Merge sorted iterators
'use strict';
function* merge(iterable1, iterable2) {
let iter1 = iterable1[Symbol.iterator]();
let iter2 = iterable2[Symbol.iterator]();
let a = iter1.next();
let b = iter2.next();
while(!a.done && !b.done) {
if (a.value <= b.value) {
yield a.value;
a = iter1.next();
}
else {
yield b.value;
b = iter2.next();
}
}
if (!a.done) {
yield a.value;
yield* iter1;
}
if (!b.done) {
yield b.value;
yield* iter2;
}
}
console.log(...merge([1, 3, 9], [2, 5, 11, 15])); //1 2 3 5 9 11 15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment