💻 Dev

🛠️ 처음부터 만드는 Flatten — 중첩 배열을 평탄화하기

# 중첩 배열을 한 단계로 펴기
배열 속 배열이 있을 때, 이를 평탄화하는 `flatten` 함수를 만들어봅시다.

기본 구현 — 재귀


```javascript
function flatten(arr, depth = Infinity) {
let result = [];
for (const item of arr) {
if (Array.isArray(item) && depth > 0) {
result = result.concat(flatten(item, depth - 1));
} else {
result.push(item);
}
}
return result;
}
console.log(flatten([1, [2, [3, 4]], 5]));
// [1, 2, 3, 4, 5]
console.log(flatten([1, [2, [3, 4]], 5], 1));
// [1, 2, [3, 4], 5]
```

Reduce를 사용한 함수형


```javascript
const flatten = (arr, depth = Infinity) =>
arr.reduce((acc, val) =>
acc.concat(Array.isArray(val) && depth > 0
? flatten(val, depth - 1)
: val),
[]);
```

내장 API — Array.prototype.flat()


최신 JavaScript(ES2019+)에서는 네이티브 `flat()` 메서드를 사용하세요:
```javascript
const arr = [1, [2, [3, 4]], 5];
console.log(arr.flat(Infinity)); // [1, 2, 3, 4, 5]
```
이 방법이 가장 최적화되어 있습니다. [MDN 문서](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat)

실무 팁


  • 깊이가 정해진 경우 → `flat(1)`, `flat(2)` 사용

  • 모든 깊이 펴기 → `flat(Infinity)`

  • 성능 중요 → 네이티브 `flat()` 사용 (C++ 구현)

  • 레거시 환경 → 직접 재귀 구현

  • 대부분의 경우 내장 API로 충분합니다!
    💬 0
    👁 0 views

    Comments (0)

    💬

    No comments yet.

    Be the first to comment!