flattend의 사전적의미는 평평하게라는 뜻이다
js에서의 flatten은 이중배열, 이중객체 등 깊이가 있는 배열을 깊이가 없도록 펼쳐서 평평한 형태로 보여주는 기능이다
unflatten은 flatten되어있는 배열이나 객체를 깊이가 있는 배열이나 객체로 만들어주는 기능이다
const { flatten, unflatten } = require("arr-flatten-unflatten");
let flat = flatten([2, 4, [8, [2, [32, 64]], 7], 5]);
/**
* => {
* "[0]": 2,
* "[1]": 4,
* "[2][0]": 8,
* "[2][1][0]": 2,
* "[2][1][1][0]": 32,
* "[2][1][1][1]": 64,
* "[2][2]": 7,
* "[3]": 5
* }
* */
unflatten(flat);
// => [2, 4, [8, [2, [32, 64]], 7], 5]
출처- https://www.npmjs.com/package/arr-flatten-unflatten
npm에서 설치해서 사용할 수도 있고 js에서 내장되어있는 flat()의 기능을 이용할 수도 있다
const newArr = arr.flat([depth])
[depth]는 중첩 배열 구조를 평탄화할 때 사용할 깊이 값이며 기본값은 1입니다.
const arr1 = [1, 2, [3, 4]];
arr1.flat();
// [1, 2, 3, 4]
const arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]
const arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]
const arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
arr4.flat(Infinity);
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
flat 메서드는 배열의 구멍도 제거합니다
const arr5 = [1, 2, , 4, 5];
arr5.flat();
// [1, 2, 4, 5]
출처-https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/flat