29.1. 프로그램언어 자바스크립트(JavaScript)에서의 이터레이터 체이닝

프로그램언어 자바스크립트에서의 이터레이터 객체 생성

이터레이터 객체는 자바스크립트에서 순회 가능한 데이터를 효율적으로 다룰 수 있도록 도와주는 객체입니다. 이터레이터 객체를 생성하려면 객체 내부에 next() 메서드를 구현해야 합니다. next() 메서드는 value와 done 두 개의 속성을 갖는 객체를 반환하는 역할을 합니다. value는 현재 순회 중인 요소의 값이고, done은 순회가 끝났는지를 나타내는 불리언 값입니다.

아래는 이터레이터 객체를 생성하는 예제 코드입니다.


// 이터레이터 객체 생성
const iterableObj = {
  data: [1, 2, 3, 4, 5],
  index: 0,
  next: function() {
    return this.index < this.data.length ?
      { value: this.data[this.index++], done: false } :
      { value: undefined, done: true };
  }
};// 이터레이터 사용
const iterator = iterableObj.next();
console.log(iterator.value); // 1
console.log(iterator.done); // falseconsole.log(iterableObj.next().value); // 2
console.log(iterableObj.next().done); // falseconsole.log(iterableObj.next().value); // 3
console.log(iterableObj.next().done); // falseconsole.log(iterableObj.next().value); // 4
console.log(iterableObj.next().done); // falseconsole.log(iterableObj.next().value); // 5
console.log(iterableObj.next().done); // falseconsole.log(iterableObj.next().value); // undefined
console.log(iterableObj.next().done); // true

프로그램언어 자바스크립트에서의 생성자를 이용한 이터레이터 생성

자바스크립트에서 생성자를 이용하여 이터레이터를 생성하는 방법에 대해 알아보겠습니다.

이터레이터는 데이터 컬렉션을 순회하면서 각 요소에 접근할 수 있는 객체입니다. 생성자를 이용하여 이터레이터를 만들 때는 next() 메서드를 구현해야 합니다. 이 메서드는 { value, done } 형태의 객체를 반환해야 합니다. value는 현재 요소의 값이고, done은 이터레이터가 끝났는지를 나타내는 boolean 값입니다.


function Iterator(array) {
  this.array = array;
  this.index = 0;
}Iterator.prototype.next = function() {
  return this.index < this.array.length ?
    { value: this.array[this.index++], done: false } :
    { done: true };
};const arr = ['A', 'B', 'C'];
const iterator = new Iterator(arr);console.log(iterator.next()); // { value: 'A', done: false }
console.log(iterator.next()); // { value: 'B', done: false }
console.log(iterator.next()); // { value: 'C', done: false }
console.log(iterator.next()); // { done: true }

프로그램언어 자바스크립트에서의 이터레이터 팩토리 생성

이터레이터 팩토리는 자바스크립트에서 이터레이터를 생성하는 패턴 중 하나입니다. 이터레이터는 순회 가능한 객체를 만들어주는 인터페이스를 제공하여 데이터를 순차적으로 접근할 수 있게 합니다. 이터레이터 팩토리는 이터레이터를 생성하는 함수를 반환하는 함수로 구성됩니다. 이를 통해 여러 개의 이터레이터를 생성할 수 있고, 각각의 이터레이터는 독립적으로 상태를 유지할 수 있습니다.

이터레이터 팩토리를 생성하는 방법은 간단합니다. 함수 안에서 클로저를 활용하여 내부 함수를 정의하고, 해당 내부 함수가 이터레이터 역할을 수행하도록 구현합니다. 이후 외부 함수에서는 이 내부 함수를 반환하면 됩니다. 이를 통해 외부 함수가 호출될 때마다 새로운 이터레이터를 생성할 수 있습니다.

아래는 자바스크립트에서 이터레이터 팩토리를 생성하는 예제 코드입니다.


function iteratorFactory(arr) {
  let index = 0;  return {
    next: function() {
      return index < arr.length ? { value: arr[index++], done: false } : { done: true };
    }
  };
}const myIterator = iteratorFactory([1, 2, 3]);console.log(myIterator.next()); // { value: 1, done: false }
console.log(myIterator.next()); // { value: 2, done: false }
console.log(myIterator.next()); // { value: 3, done: false }
console.log(myIterator.next()); // { done: true }

프로그램언어 자바스크립트에서의 이터레이터 생성의 주의점

이터레이터는 자바스크립트에서 데이터 컬렉션을 순회하고 접근하는 방법을 제공하는 중요한 개념입니다. 이터레이터를 생성할 때 몇 가지 주의해야 할 점이 있습니다.

첫째로, 이터레이터를 생성하기 위해서는 객체가 [Symbol.iterator]라는 특수한 메서드를 구현해야 합니다. 이 메서드는 이터레이터 객체를 반환해야 합니다.

둘째로, 이터레이터 객체는 next() 메서드를 가져야 합니다. 이 메서드는 { value, done } 형태의 객체를 반환해야 하며, value는 현재 요소의 값이고, done은 이터레이터가 끝났는지를 나타내는 불리언 값입니다.

아래는 이터레이터를 생성하는 예제 코드입니다.


// 이터레이터를 생성할 배열
const iterableArray = [1, 2, 3, 4, 5];// Symbol.iterator 메서드를 구현한 이터레이터 객체
const customIterator = {
    array: iterableArray,
    currentIndex: 0,
    next() {
        return this.currentIndex < this.array.length
            ? { value: this.array[this.currentIndex++], done: false }
            : { value: undefined, done: true };
    }
};// 이터레이터 객체를 사용하여 순회
const iterator = customIterator[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: 4, done: false }
console.log(iterator.next()); // { value: 5, done: false }
console.log(iterator.next()); // { value: undefined, done: true }

프로그램언어 자바스크립트에서의 이터레이터 생성 예시

이터레이터는 자바스크립트에서 데이터 컬렉션을 순회하고 접근하는 방법을 제공하는 객체입니다. 이터레이터를 생성하려면 객체에 Symbol.iterator 메서드를 구현해야 합니다. 이 메서드는 이터레이터 객체를 반환해야 합니다.

아래는 간단한 배열을 이터레이터로 순회하는 예시 코드입니다.





  Iterator Example


  


Leave a Comment