flatten, unflatten

Kingmo·2022년 4월 23일
0

1. unflatten, flatten

unflatten

자바스크립트에서 unflatten은 다음과 같은 중첩된 배열을 의미한다.

[1, [2, [3, [4]]]]

flatten

flatten은 다음과 같이 중첩이 없는 배열을 의미한다.
혹은 중첩배열을 평탄화 하는 작업을 의미한다.

[1, 2, 3, 4, 5]

2. flat()메서드

flat 메서드는 인수로 전달한 깊이만큼 재귀적으로 배열을 평탄화 한다.
쉽게 이해해보자.
다음과 같은 배열이 있다.

[1, [2, [3, [4]]]]

여기서 배열을 평탄화 하는 작업은
배열의 벽[]을 부수는 작업이라 보면된다.

위에서 제시한 배열은 이 다음과같이

1, [ 2, [ 3, [ 4 ] ] ] 3개있다.

여기서 아래와 같이 flat 메서드를 사용해
벽을 부수는 예시를 보자.

[1, [2, 3, 4, 5]].flat() // -> [1, 2, 3, 4, 5]

일단 flat.()메서드에서 인수를 생략할 경우
1개의 벽만 부순다.
즉 인수의 기본값은 1이다.

다음은 인수에 따라 얼마나 평탄화 하는지 알 수 있는 예시이다.

// 중첩 배열을 평탄화하기 위한 깊이 값의 기본값은 1이다.
[1, [2, [3, [4]]]].flat() // -> [1, 2, [3, [4]]]
[1, [2, [3, [4]]]].flat(1) // -> [1, 2, [3, [4]]]
[1, [2, [3, [4]]]].flat(2) // -> [1, 2, 3, [4]]
[1, [2, [3, [4]]]].flat().flat() // -> [1, 2, 3, [4]]
[1, [2, [3, [4]]]].flat(Infinity) // -> [1, 2, 3, 4]

인수로 Infinity를 전달하면 모든 벽을 부순다.
(중첩 배열을 모두 평탄화한다)

또한 flat() 메서드는 다음과 같은 공백도 제거한다.

const arr5 = [1, 2, , 4, 5];
arr5.flat();
// [1, 2, 4, 5]

3. 배열 박살내기

flat()메서드를 공부하면서 스프레드 연산자가 생각나
둘을 같이 써보았다.

flat 메서드로 배열안을 평탄화하고
스프레드로 배열이라는 정체성을 담고 있는 벽까지 부숴서
배열을 string으로 만들었다😂

profile
Developer

0개의 댓글