Programming Language/JavaScript
[JS]재귀함수 예제3
마손(Mason)
2022. 5. 15. 14:58
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()함수로 배열과 배열을 합쳐 새로운 배열을 만들 수 있다.