조금 해맸던 문제라서 기록한다. 네비게이터 역할로 잘 풀었던 문제인데 직접 코딩하려니 머리가 멍해지는 경험을 했다. 조건에 걸릴 경우 Recursive Case 구상에서 햇갈렸던 것으로 보인다.
if (Array.isArray(head)) return flattenArr(head.concat(tail))
return [head].concat(flattenArr(tail))
// 다차원 배열을 입력받아 1차원 배열로 변환하여 리턴해야 합니다.
function flattenArr(arr) {
// TODO: 여기에 코드를 작성합니다.
if (arr.length === 0) return [];
// if (arr.length === 1) return arr[0];
let head = arr[0]
let tail = arr.length === 1 ? [] : arr.slice(1)
if (Array.isArray(head)) {
return flattenArr(head.concat(tail))
}
else {
return [head].concat(flattenArr(tail))
}
}
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]