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 |