[ Javascript ] Iterator

dayglow·2023년 11월 29일
0

Javascript

목록 보기
4/7

Iterator (반복자) 란?

반복자는 반복 처리가 가능한 객체이며, next()를 호출해서 {valu:, done:} 두 개의 속성을 가지는 객체를 반환하는 객체입니다.
그리고 반복 가능한 객체를 Iterable이라고 부릅니다.
for...of 를 이용할 수 있거나 [Symbol.iterator] 이 값을 가지면 Iterable 한 것입니다.

Iterator 구조 예시

function makeIterator(numbers){
	let nextIndex = 0;
  
  	return {
    	next: function (){
        	return nextIndex < numbers.length ? 
              {value :numbers[nextIndex++], done: false} :
              {value :undefined, done: true}
        }
    }
}

const numbersArray = [1,2,3]
const numbersIterator = makeIterator(numbersArray);

console.log(numbersIterator.next());//{value: 1, done: false}
console.log(numbersIterator.next());//{value: 2, done: false}
console.log(numbersIterator.next());//{value: 3, done: false}
console.log(numbersIterator.next());//{value: undefined, done: true}

Iterator 사용방법

배열 뒤에 Symbol.iterator 를 붙여주기만 하면 반복가능한 값을 반복기로 생성이 가능합니다.

const numbersArray = [1,2,3]
const numbersIterator = numbersArray[Symbol.iterator]();

console.log(numbersIterator.next());//{value: 1, done: false}
console.log(numbersIterator.next());//{value: 2, done: false}
console.log(numbersIterator.next());//{value: 3, done: false}
console.log(numbersIterator.next());//{value: undefined, done: true}

Iterable한 객체

Iterable한 객체는 다양하게 존재합니다.

const set = new Set([1,2,3,4]);
const map = new Map([['a',1], ['b',2]]);

console.log(set[Symbol.iterator]()); //SetIterator {1, 2, 3, 4}
console.log(map[Symbol.iterator]()); //MapIterator {'a' => 1, 'b' => 2}

0개의 댓글