flatten

less than 1 minute read

개요

이 글은 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