본문 바로가기

Programming Language/JavaScript

[JS]재귀함수 예제3

Q3.

다차원 배열을 입력받아 1차원 배열로 변환하여 리턴해야 합니다.

function flattenArr(arr) {
  if (arr.length === 0){return []} // 빈 배열 입력 처리

  const head = arr[0]
  const tail = arr.slice(1) // head와 tail을 활용하여 arr를 재귀적으로 순회

  if (Array.isArray(head)){
    return flattenArr([...head, ...tail]) // 전개구문
  }
  else {
    return [head].concat(flattenArr(tail)) // 재귀적으로 tail을 호출하며 최종적으로는 평평한 배열이 출력
  }
}
  • arr를 반복문 사용하지않고 재귀호출로 순회할 수 있는 방법으로 head와 tail을 이용할 수 있다.
  • ...은 전개구문으로 다음을 참고하자. 배열의 각 요소를 하나하나 뽑아내서 함수를 실행시킨다고 볼 수 있다.
  • arr.concat()함수로 배열과 배열을 합쳐 새로운 배열을 만들 수 있다.

'Programming Language > JavaScript' 카테고리의 다른 글

[JavaScript]fs 라이브러리  (0) 2022.07.14
[JS]재귀함수 예제2  (0) 2022.05.15
[JS]재귀함수 예제1  (0) 2022.05.13
[JS]재귀함수 예제  (0) 2022.05.11
[JS]arr의 다양한 메소드  (0) 2022.05.08