Код IT
← Каталог

Работа с объектами и прототипами — Iterator и AsyncIterator

Фрагмент из «Работа с объектами и прототипами»: Iterator и AsyncIterator.

JavaScript main.js
// Создание кастомного итератора
const range = {
    from: 1,
    to: 5,
    
    [Symbol.iterator]() {
        let current = this.from;
        const last = this.to;
        
        return {
            next() {
                if (current <= last) {
                    return { value: current++, done: false };
                } else {
                    return { done: true };
                }
            }
        };
    }
};

// Использование итератора
for (let num of range) {
    console.log(num); // 1, 2, 3, 4, 5
}

// Распространение в массив
const arr = [...range];
console.log(arr); // [1, 2, 3, 4, 5]
// Создание кастомного итератора
const range = {
    from: 1,
    to: 5,
    
    [Symbol.iterator]() {
        let current = this.from;
        const last = this.to;
        
        return {
            next() {
                if (current <= last) {
                    return { value: current++, done: false };
                } else {
                    return { done: true };
                }
            }
        };
    }
};

// Использование итератора
for (let num of range) {
    console.log(num); // 1, 2, 3, 4, 5
}

// Распространение в массив
const arr = [...range];
console.log(arr); // [1, 2, 3, 4, 5]