WEB/JS
[JS] 이터러블
우와왕고기다
2024. 1. 1. 19:18
이터러블
- 자료를 반복할 수 있는 객체 ex) 배열
- 이터러블 프로토콜을 준수한 객
- 이터레이터 메서드(Symbol.iterator)를 반환하는 객체
// 배열은 이터러블 프로토콜을 준수한다.
const arr = [1,2,3];
for(item of arr){
console.log(item);
}
// 일반 객체를 이터러블 프로토콜을 준수하지 않아서 for...of 같은 메서드를 사용할 수 없다.
const obj = {
a: 1,
b: 2
};
for(item of obj){
console.log(item); //TypeError: obj is not iterable
}
이터레이터
이터러블을 호출하면 이터레이터 프로토콜을 준수하는 객체
next()객체를 갖는다.
next()
- 이터러블의 각 요소를 순회하기 위한 포인터 역할
- 순회하면서 순차적으로 순회 결과를 이터레이터 리절트 객체를 반환한다.
- 프로퍼티로 value : 현재 값, done : 순회 가능 여부로 이루어져 있다.
const iterator = arr[Symbol.iterator]();
console.log(iterator.next()); //{value: 1, done: false}
console.log(iterator.next()); //{value: 2, done: false}
console.log(iterator.next()); //{value: 3, done: false}
console.log(iterator.next()); //{value: undefined, done: true}