JavaScript에서 이터러블 객체 생성하기

for-of 루프로 반복할 수 있는 진정한 이터러블 객체를 만들어 봅시다. 이를 위해 객체에 Symbol.iterator에 해당 함수를 추가해야 합니다.

구현해 보겠습니다. 다음과 같은 객체가 있다고 가정해 봅시다:

javascriptlet obj = {
  a: 1,
  b: 2,
  c: 3,
};

Symbol.iterator에 함수를 추가하겠습니다:

javascriptobj[Symbol.iterator] = function() {

}

이 함수를 제너레이터로 만들어 보겠습니다:

javascriptobj[Symbol.iterator] = function *() {

}

함수 내부에서 this는 객체 자체를 참조할 것입니다:

javascriptobj[Symbol.iterator] = function *() {
  console.log(this); // 객체 자체
}

이터레이터 내에서 객체를 반복해 보겠습니다:

javascriptobj[Symbol.iterator] = function *() {
  for (let key in this) {
    yield obj[key];
  }
}

이제 객체를 for-of 루프로 반복할 수 있습니다:

javascriptfor (let elem of obj) {
  console.log(elem); // 1, 2, 3
}
Задание 1

for-of 루프로 반복할 수 있는 객체를 만드세요. 루프 요소에는 key 키에 반복되는 객체의 키가 있고, val 키에는 값이 있는 객체가 포함되어야 합니다. 예시:

javascriptlet obj = {a: 1, b: 2, c: 3};

for (let elem of obj) {
  console.log(elem);
}

출력 결과:

javascript{key: 'a', val: 1}
{key: 'b', val: 2}
{key: 'c', val: 3}