중첩 배열을 평탄화 한다는 것의 의미 #
- 눈으로 보는게 가장 빠르다
[1, [2], [[3]], [[[4]]]] // 중첩
[1, 2, ,3, 4] // 평탄화
위와 같이 여러 배열이 중첩되어 있는 상태를
아래와 같은 형태로 풀어낸다는 것이다.
중첩 배열을 평탄화 해보기 #
이런 저런 잡설을 늘어놓는 것 보다 코드를 이해하는 편이 도움이 될 수 있다.
function* flat(iter) {
for (const a of iter) {
if (Array.isArray(a)) yield* flat(a);
else yield a;
}
}
const a = [[1], 2, [3]];
const b = [...flat(a)];
console.log("b:", b);
위 코드는 이러하다.
배열을 받아 배열을 순회하며 순회한 인자가 배열인 경우 재귀적으로 파고들고 아닌 경우 인자를 반환한다.
이를 iterable 함수로 작성하면 된다.