JS-배열과 Iterator

Dongs·2023년 3월 14일
0

HTML, CSS, JavaScript

목록 보기
11/12

Iterator

  • Iterator가 무엇일까?
const array = [1,2,3,4,5,6,7];


const iterator = (function(){
  let num = 1;
  
  return {
    next: function() {
      return (
      		num > 7 ?
        	{ done: true} :
        	{ done: false, value: num++ }
      );
    }
  };
})();
  • 위의 코드를 살펴보면 당연히 배열은 어느 누구나 알다시피 1~7의 범위의 숫자가 들어있는 변수 array 이다.

  • 바로 밑에 있는 iterator 변수에 들어있는 iterator 함수는 1~7의 값을 구하는 값이다. iterator를 만들게 되면 로직을 처리해주는 next 라는 함수를 써야하며 객체에 boolean 값을 담는 done 이라는 키 값과 변수의 값을 담고 있는 value 라는 키 값이 존재한다.

의문

  • 배열도 1~7의 값이고 iterator도 1~7의 값을 보여주는 것인데 왜 iterator을 써야 하는 것일까? 배열을 쓰면 안되는 것일까?

=> 배열 아이템 1부터 7, 7개는 모두 메모리를 차지한다. 그러나 iterator 는 변수 하나만 존재하며, 시스템 적으로 효율이 좋다.

결론

  • 배열의 아이템이 만 개 이상이 넘어가게 된다면, 개발자 입장에서는 배열을 선언하여 for loop를 돌며 아이템을 순회하는 것과 iterator를 구현하는 것, 아무런 감흥이 없다. 그러나 시스템적으로는 배열의 아이템 만 개 이상이 메모리를 차지하게 되고 iterator는 여전히 배열보다는 낮은 메모리를 차지하게 된다.

  • 만약 순열, 조합 같은 알고리즘을 사용하게 되야하는 상황이 오게 된다면 배열 보다는 iterator로 구현하는 것이 훨씬 시스템적으로 좋다는 것이다.

=> 상황에 맞게 개발자, 시스템에게 효율적인 코드를 작성하자.

profile
자대고 css 하는 프론트엔드 개발자

0개의 댓글