Silmukat generaattoreissa JavaScriptissä

Generaattoreiden sisällä voidaan käyttää silmukoita. Samalla voimme pysäyttää silmukoita käyttämällä yield. Katsotaanpa esimerkkiä. Pysäytämme silmukan jokaisella iteraatiolla:

javascriptfunction *func() {
  for (let i = 1; i <= 3; i++) {
    yield i;
  }
}

Saamme iteraattorin:

javascriptlet iter = func();

Tarkistetaan iteraattorimme toiminta:

javascriptconsole.log(iter.next()); // {value: 1, done: false}
console.log(iter.next()); // {value: 2, done: false}
console.log(iter.next()); // {value: 3, done: false}
console.log(iter.next()); // {value: undefined, done: true}
Задание 1

Luo iteraattori, jonka jokainen kutsu palauttaa numerot 10:stä nollaan.

Задание 2

Tee generaattori, joka ottaa parametrikseen luvun. Jokaisen iteraattorin kutsun tulee vähentää lukua yhdellä, kunnes nolla saavutetaan.

Задание 3

Tee generaattori, joka ottaa parametrikseen luvun. Jokaisen iteraattorin kutsun tulee vähentää lukua puoleen ja palauttaa tulos. Ja niin, kunnes luku tulee pienemmäksi kuin yksi.

Задание 4

Tee iteraattori, jonka jokainen kutsu palauttaa seuraavan kahden potenssin.

Задание 5

Tee iteraattori, jonka jokainen kutsu palauttaa seuraavan Fibonaccin luvun.