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}