spread / rest 예제
2023. 1. 3. 14:13ㆍ코드스테이츠/예제모음
function printMaxNums(...args) { // 전달인자를 모두 args가 받는다.
console.log(args)
}
printMaxNums(10, 30, 40) // 전달인자 10, 20, 30
function findBiggestArg(...args) { // [10, 30, 40, 20]
let biggestArg = 0; // 값이 0인 변수 biggestArg 선언
for (let i = 0; i < args.length; i += 1){ // 배열 args를 돌면서
if (biggestArg < args[i]){ // 0보다 args의 i번째 인덱스 위치의 값이 크다면,
biggestArg = args[i] // 그 값을 biggestArg변수에 할당한다.
}//반복문 한바퀴 10, 두바퀴 30, 세바퀴 40, 네바퀴째에는 biggestArg변수가 20보다 크기때문에 리턴
}
return biggestArg
}
let value = findBiggestArg(10, 30, 40, 20)
let arr = [10, 30, 40, 20]
let value = Math.max(arr) // 배열은 전달인자로 사용 할 수 없다.
//NaN
let arr = [10, 30, 40, 20]
let value = Math.max(...arr)//spread는 배열을 풀어서 인자로 사용 가능하게 해준다.
//[10, 30, 40, 20] 중 가장 큰 수인 40을 반환
let arr = ['code', 'states']
let value = [...arr,'pre'...['course', 'student']] //spread는 요소를 펼쳐서 넣어준다.
//['code', 'states','pre','course', 'student']
let fruits = ['apple', 'banana', 'grape'];
let vegetables = ['tomato', 'pumpkin'];
let copiedFruits = [...fruits]; // fruits배열의 복사본 ['apple', 'banana', 'grape'];
copiedFruits.push('pineapple');// ['apple', 'banana', 'grape','pineapple'];
let basket = [...fruits, ...vegetables] // ['apple', 'banana', 'grape','tomato', 'pumpkin'];
//spread는 원본에 영향을 끼치지 않는다.
console.log(basket)
function myFun(a, b, ...manyMoreArgs) {
console.log(manyMoreArgs);
}
myFun("one", "two", "three", "four", "five", "six");
// a에 "one"이, b에 "two"가 할당되고 나머지 인자들은 manyMoreArgs에 할당된다.
function getAllParamsByArgumentsObj() {
return arguments;
}
const restParams = getAllParamsByRestParameter('first', 'second', 'third');//여기부터
const argumentsObj = getAllParamsByArgumentsObj('first', 'second', 'third');
expect(restParams).to.deep.equal(['first', 'second', 'third']);
expect(Object.keys(argumentsObj)).to.deep.equal(['0','1','2']);
expect(Object.values(argumentsObj)).to.deep.equal(['first', 'second', 'third']);
expect(restParams === argumentsObj).to.deep.equal(false);
expect(typeof restParams).to.deep.equal('object');
expect(typeof argumentsObj).to.deep.equal('object');
expect(Array.isArray(restParams)).to.deep.equal(true);
expect(Array.isArray(argumentsObj)).to.deep.equal(false);
const argsArr = Array.from(argumentsObj);
expect(Array.isArray(argsArr)).to.deep.equal(true);
expect(argsArr).to.deep.equal(['first', 'second', 'third']);
expect(argsArr === restParams).to.deep.equal(false);
});
function getAllParams(required1, required2, ...args) {
return [required1, required2, args];
}
expect(getAllParams(123)).to.deep.equal([123,undefined,[]]);
function makePizza(dough, name, ...toppings) {
const order = `You ordered ${name} pizza with ${dough} dough and ${toppings.length} extra toppings!`;
return order;
}
expect(makePizza('original')).to.equal('You ordered undefined pizza with original dough and 0 extra toppings!');
expect(makePizza('thin', 'pepperoni')).to.equal('You ordered pepperoni pizza with thin dough and 0 extra toppings!');
expect(makePizza('napoli', 'meat', 'extra cheese', 'onion', 'bacon')).to.equal('You ordered meat pizza with napoli dough and 3 extra toppings!');
});
});
'코드스테이츠 > 예제모음' 카테고리의 다른 글
Git 설정 및 기본 명령어 (0) | 2023.04.12 |
---|---|
객체분해 예제 (0) | 2023.01.04 |
스코프 예제 (0) | 2023.01.03 |