자바스크립트에서는 flat 내장 함수를 지원하고 있다.
flat는 이중 배열이나 중첩된 배열을 하나의 배열로 만들어 주는 작업이다.
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]
unFlatten 은 flat의 반대말로 평탄화 작업이 아니라 비평탄화를 하는 것이다.
import { flatten, unflatten } from "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]