Skip to content

Урок 20: Iterators і Generators в JavaScript

romantsisyk edited this page Apr 29, 2024 · 1 revision

Мета Уроку

Ознайомитися з концепціями ітераторів та генераторів в 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 надають потужні інструменти для ефективної та налаштованої обробки даних. Вони дозволяють керувати поведінкою ітерації, оптимізувати виконання програм та ефективно працювати з

великими обсягами даних або комплексними структурами даних.

Clone this wiki locally