Guest User

Untitled

a guest
Dec 13th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.60 KB | None | 0 0
  1. 'use strict';
  2. function* merge(iterable1, iterable2) {
  3. let iter1 = iterable1[Symbol.iterator]();
  4. let iter2 = iterable2[Symbol.iterator]();
  5. let a = iter1.next();
  6. let b = iter2.next();
  7. let isFirst;
  8.  
  9. while(!a.done && !b.done) {
  10. if (a.value <= b.value) {
  11. yield a.value;
  12. isFirst = true;
  13. }
  14. else {
  15. yield b.value;
  16. isFirst = false;
  17. }
  18.  
  19. if (isFirst) {
  20. a = iter1.next();
  21. }
  22. else {
  23. b = iter2.next();
  24. }
  25. }
  26.  
  27. if (!a.done) {
  28. yield a.value;
  29. yield* iter1;
  30. }
  31. if (!b.done) {
  32. yield b.value;
  33. yield* iter2;
  34. }
  35.  
  36. }
  37.  
  38. console.log(...merge([1, 3, 9], [2, 5, 11, 15])); //1 2 3 5 9 11 15
Add Comment
Please, Sign In to add comment