Rest parameter
const sum = function(...args) {
return args.reduce((prev, curr) => {
return prev + curr;
});
}
sum(1, 2, 3)
sum(1, 2, 3, 4)
rest param 이해하면서 재귀도 보고.. 믹스 공부
- array의 인스턴스로 array method 를 사용할 수 있다.
- args를 하나의 배열로 받는다.
아래 코드에서 함수호출을 args[0]
으로 했다.
- slice로 targetArr의 첫 번째 요소를 제거한 값을 인자로 넣었지만, targetArr의 값 자체는 변하지 않는다.
- 헷갈리면
console.log
로 다 넣어서 일일이 확인하자!!
문제 : 숫자 배열의 모든 숫자를 프린트합니다. 여기에서 반드시 재귀를 사용해야 합니다.
const printArray = function (...args) {
function _print(targetArr) {
if (targetArr.length === 0) {
return;
} else {
let temp = targetArr[0];
if (Array.isArray(temp)) {
_print(temp);
_print(targetArr.slice(1));
} else if (temp) {
_print(targetArr.slice(1));
} else {
_print(targetArr.slice(1));
}
}
}
_print(args[0]);
};
printArray([1, 2, ,[3, 4], 5]);
Spread syntax
const sum = function(a, b, c) {
return a + b + c;
}
const nums = [1, 2, 3];
sum(...nums)
1) 배열 합치기
let lyrics = ['sweet','as']
let words = ['life', 'is', ...lyrics, 'honey']
words
let arr1 = ['get', 'up']
let arr2 = ['in','the','morn']
arr1 = [...arr1, ...arr2]
2) 객체 합치기
let obj1 = {name : 'JK', age : 25};
let obj2 = {name : 'RM', position : 'leader'}
let cloneObj1 = {...obj1}
cloneObj1
let mergeObjs = {...obj1, ...obj2}
mergeObjs
3) 함수에서 나머지 파라미터 받아오기
const nums = function(a, b, ...args) {
console.log('a', a);
console.log('b', b);
console.log('args', args);
}
nums(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
읽어보기