문제
수(num)와 배열을 입력받아 차례대로 num개의 요소만 포함된 새로운 배열을 리턴해야 합니다.
입력
num : number 타입의 정수 (num >= 0)
arr : 임의의 요소를 갖는 배열
출력
순차적으로 num 개의 요소로 구성된 배열을 리턴해야 합니다.
입출력 예시
let output = take(2, [1, -2, 1, 3]);
console.log(output); // --> [1, -2]
output = take(5, [1, -2, 1, 3]);
console.log(output); // --> [1, -2, 1, 3]
풀이코드 설명
function take(num, arr) {
// num이 0이거나 arr의 배열의 크기가 0일 경우 빈 배열을 반환한다.
// 재귀함수의 탈출 조건
if (num === 0 || arr.length ===0){
return [];
}
//다음과 같은 방식은 많이 쓰이는 패턴이다.
//head에는 배열의 첫번째 요소를 tail에는 배열의 2번째요소부터 마지막까지를 선언해주는 방식이다.
const head = arr[0];
const tail = arr.slice(1);
//head에 num-1과 tail을 입력인자로 재귀함수 호출
return [head].concat(take(num-1, tail));
}
풀이코드에서 쓰인 함수
Array.prototype.concat()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat
Array.prototype.slice()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice
Javascript 재귀 함수문제(6) - reverseArr (0) | 2022.12.11 |
---|---|
Javascript 재귀 함수문제(5) - and (0) | 2022.12.11 |
Javascript 재귀 함수문제(3) - drop (0) | 2022.12.11 |
Javascript 재귀 함수문제(1) - isOdd (0) | 2022.12.11 |
Javascript 고차 함수문제(12) - studentReports (0) | 2022.12.10 |