flatten
개요
이 글은 https://www.30secondsofcode.org/에서 작성한 글을 번역 및 확인해보는 글 입니다.
원문 : flatten
Flattens는 특정 깊이까지 배열을 끌어 올립니다.
재귀를 사용하여 깊이 수준을 1씩 감소시킵니다. Array.prototype.reduce()
및 Array.prototype.concat()
로 배열의 요소들을 병합합니다. Base case(재귀시 탈출 조건)는 깊이가 1일때 재귀가 멈춥니다. 깊이를 단 하나만 낮출 경우 두번재 요소를 생략합니다.
var flatten = (arr, depth = 1) =>
arr.reduce(
(a, v) =>
a.concat(depth > 1 && Array.isArray(v) ? flatten(v, depth - 1) : v),
[]
)
flatten([1, [2], 3, 4]) // [1, 2, 3, 4]
flatten([1, [2, [3, [4, 5], 6], 7], 8], 2) // [1, 2, 3, [4, 5], 6, 7, 8]
설명
순환중인 현재 요소가 배열인지 확인하여 배열이면 재귀 호출을 하는것으로 depth를 낮추게 된다.
Leave a comment