-
Notifications
You must be signed in to change notification settings - Fork 0
Урок 20: Iterators і Generators в JavaScript
Ознайомитися з концепціями ітераторів та генераторів в JavaScript, зрозуміти, як вони працюють і як їх можна використовувати для управління поведінкою ітерацій.
Ітератори та генератори в JavaScript забезпечують потужний механізм для налаштування ітерацій через колекції даних. Вони дозволяють виконувати ліниві обчислення, що може бути корисно для обробки великих датасетів або нескінченних послідовностей.
Ітератор — це об'єкт, який дозволяє програмістам послідовно перебирати елементи колекції. Він повинен мати метод next(), який повертає наступний елемент у колекції у формі об'єкта { value, done }.
Приклад ітератора:
function makeRangeIterator(start = 0, end = Infinity, step = 1) {
let nextIndex = start;
let iterationCount = 0;
const rangeIterator = {
next: function() {
let result;
if (nextIndex < end) {
result = { value: nextIndex, done: false };
nextIndex += step;
iterationCount++;
return result;
}
return { value: iterationCount, done: true };
}
};
return rangeIterator;
}
const it = makeRangeIterator(1, 10, 2);
let result = it.next();
while (!result.done) {
console.log(result.value); // 1, 3, 5, 7, 9
result = it.next();
}
console.log("Iterated over sequence of size: ", result.value); // 5Генератор — це спеціальний тип функції, який можна використовувати для управління ітераційними операціями. Він пишеться з використанням ключового слова function* і може зупиняти своє виконання з допомогою ключового слова yield.
Приклад генератора:
function* generateSequence(start, end, step) {
for (let i = start; i < end; i += step) {
yield i;
}
}
const generator = generateSequence(1, 10, 2);
for (let value of generator) {
console.log(value); // 1, 3, 5, 7, 9
}Генератори ідеально підходять для реалізації складних ітераційних алгоритмів, таких як робота з графами, лінива обробка даних, або для створення нескінченних ітераційних послідовностей.
Ітератори та генератори в JavaScript надають потужні інструменти для ефективної та налаштованої обробки даних. Вони дозволяють керувати поведінкою ітерації, оптимізувати виконання програм та ефективно працювати з
великими обсягами даних або комплексними структурами даних.
Navigate Through Lessons:
Previous Lesson | Next Lesson | Home
Additional Resources:
Stay Connected:
© 2024 Roman Tsisyk. All rights reserved.