Делаем простые объекты повторяемыми. (javascript) - PullRequest
2 голосов
/ 27 февраля 2020

Итак, я работаю над личным проектом после того, как покрыл первые семь глав красноречивого javascript Марджина Хевербеке. Я создаю школьную систему обработки данных. Итак, я уже сделал свою структуру данных, которая включает в себя множество объектов, поэтому я создал тестовый объект, чтобы я мог практиковать протокол итерации, это то, что я написал

let object = {a:'a',b:'b',c:'c',d:'d',e:'e'};
object[Symbol.iterator]=function(){
    let keys = Object.keys(this);
    let count=0;
return {
    next(){
        if(count>keys.length){
            return {value: null, done:true};
        }
        else{
            let value=this[keys[count]];
            count++;
            return {value, done:false};
        }
    }
}
}

, но когда я делаю это

    for(let each of object){
       console.log([each]);
}

выводит

//Array[undefined]
//Array[undefined]
//Array[undefined]
//Array[undefined]
//Array[undefined]
//Array[undefined]
//Array[undefined]

Я не знаю, что не так, oO, пожалуйста, помогите.

1 Ответ

2 голосов
/ 27 февраля 2020

Попробуйте это:

let object = {
  a: 'a',
  b: 'b',
  c: 'c',
  d: 'd',
  e: 'e',
};
object[Symbol.iterator] = function () {
  let keys = Object.keys(this);
  let count = 0;
  return {
    next() {
      if (count === keys.length) {
        return {
          value: null,
          done: true,
        };
      }
      let value = keys[count];
      count++;
      return {
        value,
        done: false,
      };
    },
  };
};

for (let each of object) {
  console.log([each]);
}

Обратите внимание, ошибки были: let value=this[keys[count]]; и if (count > keys.length)

...