Показать сообщение отдельно
  #200 (permalink)  
Старый 01.03.2015, 20:33
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Как написать итератор, который будет работать в цикле for ... of?
Этот код не работает
function makeIterator(array){
    var nextIndex = 0;

    return {
        next: function(){
            return nextIndex < array.length ?
            {value: array[nextIndex++], done: false} :
            {done: true};
        }
    }
}

var iterator = makeIterator([1,2,3]);

for(var key of iterator.next()) {
    console.log(key);
}

Пример итератора взят отсюда https://developer.mozilla.org/en-US/...rator_examples

upd: понял
function makeIterator(array){
    var nextIndex = 0;

    function next() {
        return nextIndex < array.length ?
        {value: array[nextIndex++], done: false} :
        {done: true};
    }

    return {
        [Symbol.iterator]: function() {
            return {
                next: next
            };
        },
        next: next
    }
}

var iterator = makeIterator([1,2,3]);

for(var key of iterator) {
    console.log(key);
}

https://developer.mozilla.org/ru/doc...rator_protocol
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 01.03.2015 в 20:48.
Ответить с цитированием