소개
이 랩에서는 JavaScript 의 이터레이터 (iterator) 와 제너레이터 (generator) 개념을 탐구합니다. 특히, 중첩된 배열과 세트를 반복하고 이를 단일 반복 가능 객체로 평탄화할 수 있는 플랫 이터레이터 (flat iterator) 를 만드는 데 중점을 둡니다. 이를 통해 중첩된 데이터 구조에 보다 효율적으로 접근하고 조작할 수 있습니다. 이 랩을 마치면 제너레이터와 이터레이터가 어떻게 작동하는지, 그리고 실제 문제를 해결하는 데 어떻게 적용할 수 있는지 더 깊이 이해하게 될 것입니다.
플랫 이터레이터 (Flat Iterator) 설명
반복 가능한 객체를 반복하고 중첩된 반복 가능 객체를 평탄화하는 제너레이터를 만들려면 다음 단계를 따르세요.
- 터미널/SSH 를 열고
node를 입력하여 코딩 연습을 시작합니다. - 제너레이터 함수에서 재귀 (recursion) 를 사용합니다.
for...of루프를 사용하여 주어진 반복 가능 객체의 값을 반복합니다.Symbol.iterator를 사용하여 각 값이 반복 가능한 객체인지 확인합니다.- 반복 가능한 객체인 경우,
yield*표현식을 사용하여 동일한 제너레이터 함수에 재귀적으로 위임합니다. - 그렇지 않으면 현재 값을
yield합니다.
다음은 코드 예시입니다.
const flatIterator = function* (itr) {
for (let item of itr) {
if (item[Symbol.iterator]) yield* flatIterator(item);
else yield item;
}
};
const arr = [1, 2, [3, 4], [5, [6, [7], 8]], 9, new Set([10, 11])];
[...flatIterator(arr)]; // 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
이 예제에서 arr는 중첩된 배열과 세트를 포함한 값의 배열입니다. flatIterator 제너레이터 함수는 이러한 중첩된 값을 평탄화하고 평탄화된 배열을 반환하는 데 사용됩니다.
요약
축하합니다! 플랫 이터레이터 랩을 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 실력을 향상시킬 수 있습니다.