문제
다차원 배열을 입력받아 1차원 배열로 변환하여 리턴해야 합니다.
입력
arr : 양의 정수 또는 배열을 요소로 갖는 다차원 배열 (입출력 예시 참고)
출력
배열을 리턴해야 합니다.
입출력 예시
let output = flattenArr([[1], 2, [3, 4], 5]);
console.log(output); // --> [1, 2, 3, 4, 5]
output = flattenArr([[2, [[3]]], 4, [[[5]]]]);
console.log(output); // --> [2, 3, 4, 5]
풀이코드 설명
function flattenArr(arr) {
// 말그대로 다차원 배열을 1차원 배열형태로 만들어주는 재귀함수 코드다.
// 배열의 크기가 0이면 빈 배열을 반환하기
if (arr.length === 0){
return [];
}
//헤드변수에 arr 배열의 첫번째 변수를 지정
const head = arr[0]
//삼항연산자 개념을 사용했다.
// tail이 arr의 배열의 길이 1과 같으면 []빈 배열 반환 같지 않을 경우 2번째 요소부터 배열선언
const tail = arr.length === 1 ? [] : arr.slice(1);
// Array의 isArray을 호출해서 배열이 맞는지 체크
//배열이 맞으면 다시 flattenArr을 호출하면서 재귀함수 호출
//arr의 첫번쨰요소와 두번쨰부터 마지막까지의 요소들을 인자로 넣고 합치기
if(Array.isArray(head)){
return flattenArr(head.concat(tail));
}
//인자만 있는 head에 배열형태로 넣어준뒤 재귀함수 호출
else{
return [head].concat(flattenArr(tail));
}
}
Javascript Implementation Queue (0) | 2022.12.14 |
---|---|
Javascript Implementation Stack (0) | 2022.12.12 |
Javascript 재귀 함수문제(7) - findMatryoshka (0) | 2022.12.11 |
Javascript 재귀 함수문제(6) - reverseArr (0) | 2022.12.11 |
Javascript 재귀 함수문제(5) - and (0) | 2022.12.11 |