Ну вот вам генерация арифметической прогрессии:
function* arithmeticSequence(a1, d, length = Infinity) {
for (let i = 0; i < length; i++) {
yield a1 + i * d;
}
}
Как использовать:
const t = arithmeticSequence(10, 10);
t.next().value // 10
t.next().value // 20
t.next().value // 30
// ну и т.д., вызываем столько раз, сколько значений нужно получить
for (const n of arithmeticSequence(1, 23)) {
if (n > 100) {
break;
}
console.log(n); // будет выведено: 1 24 47 70 93
}
[...arithmeticSequence(3, 4, 5)] // получим следующий массив: [3, 7, 11, 15, 19]
[...arithmeticSequence(1, 1)] // шутка, так не надо