🖥
Генераторы и итераторы в JavaScriptВ языке
JavaScript итераторы и генераторы являются мощными инструментами, позволяющими разработчикам контролировать итерацию и поток данных. Вместе эти функции образуют впечатляющий дуэт, позволяющий писать лаконичный, эффективный и гибкий
JavaScript-код.В JavaScript функция-итератор — это уникальная функция, возвращающая объект-итератор. Объект-итератор — это объект, который через метод next() возвращает объект с двумя свойствами: value и done. Свойство value представляет собой следующее значение в последовательности, а свойство done указывает, достиг ли
итератор конца последовательности.Функции-итераторы могут использоваться для перебора наборов данных, таких как массивы и объекты.
Ниже приведен
пример функции-итератора, выполняющей итерацию по массиву:
function Iterator(array) {
let nextIndex = 0;
return {
next: function () {
if (nextIndex < array.length) {
return {
value: array[nextIndex++],
done: false,
};
} else {
return {
value: undefined,
done: true,
};
}
},
};
}
const array = [1, 2, 3, 4, 5];
const arrayValue = Iterator(array);
console.log(arrayValue.next()); // { value: 1, done: false }
console.log(arrayValue.next()); // { value: 2, done: false }
console.log(arrayValue.next()); // { value: 3, done: false }
console.log(arrayValue.next()); // { value: 4, done: false }
console.log(arrayValue.next()); // { value: 5, done: false }
console.log(arrayValue.next()); // { value: undefined, done: true }
В приведенном выше коде определена функция
Iterator, которая принимает в качестве аргумента массив и возвращает объект итератора. Объект итератора через метод
next возвращает следующий элемент массива и обновляет внутреннюю переменную
nextIndex для отслеживания индекса массива.
Метод
next проверяет, меньше ли
nextIndex длины массива. Если это так, то метод возвращает объект со значением массива в позиции nextIndex и устанавливает свойство done в
false. После этого переменная nextIndex увеличивается на единицу. Если
nextIndex больше или равно длине массива, то метод
next устанавливает свойство done в true.
📌
Читать дальше@javascriptv