JavaScriptにおけるジェネレーター内のループ
ジェネレーター内部ではループを使用できます。
このとき、yieldを使用してループを一時停止することができます。
例を見てみましょう。各イテレーションでループを一時停止します:
function *func() {
for (let i = 1; i <= 3; i++) {
yield i;
}
}
イテレーターを取得します:
let iter = func();
私たちのイテレーターの動作を確認しましょう:
console.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}
毎回の呼び出しで10から0までの数字を返すイテレーターを作成してください。
数字をパラメータとして受け取るジェネレーターを作成してください。 イテレーターが呼び出されるたびに、ゼロに達するまで数字を1つずつ減らしていきます。
数字をパラメータとして受け取るジェネレーターを作成してください。 イテレーターが呼び出されるたびに、数字が1未満になるまで、数字を半分に減らして結果を返します。
毎回の呼び出しで次の2の累乗を返すイテレーターを作成してください。
毎回の呼び出しで次のフィボナッチ数を返すイテレーターを作成してください。