JavaScript에서 이터러블 객체 생성하기
for-of 루프로 반복할 수 있는 진정한 이터러블 객체를 만들어 봅시다.
이를 위해 객체에 Symbol.iterator에 해당 함수를 추가해야 합니다.
구현해 보겠습니다. 다음과 같은 객체가 있다고 가정해 봅시다:
let obj = {
a: 1,
b: 2,
c: 3,
};
Symbol.iterator에 함수를 추가하겠습니다:
obj[Symbol.iterator] = function() {
}
이 함수를 제너레이터로 만들어 보겠습니다:
obj[Symbol.iterator] = function *() {
}
함수 내부에서 this는 객체 자체를 참조할 것입니다:
obj[Symbol.iterator] = function *() {
console.log(this); // 객체 자체
}
이터레이터 내에서 객체를 반복해 보겠습니다:
obj[Symbol.iterator] = function *() {
for (let key in this) {
yield obj[key];
}
}
이제 객체를 for-of 루프로 반복할 수 있습니다:
for (let elem of obj) {
console.log(elem); // 1, 2, 3
}
for-of 루프로 반복할 수 있는 객체를 만드세요.
루프 요소에는 key 키에 반복되는 객체의 키가 있고,
val 키에는 값이 있는 객체가 포함되어야 합니다.
예시:
let obj = {a: 1, b: 2, c: 3};
for (let elem of obj) {
console.log(elem);
}
출력 결과:
{key: 'a', val: 1}
{key: 'b', val: 2}
{key: 'c', val: 3}