글 작성자: 망고좋아
반응형

🎯 나머지 매개변수, Rest Operator

  • 함수의 인자, 배열, 객체 중 나머지 값을 묶어 사용하도록 한다.
  • 함수의 인자 중 나머지를 가리킨다.
  • 배열의 나머지 인자를 가리킨다.
  • 객체의 나머지 필드를 가리킨다.

 

📝 함수 인자 Rest Operator

function findMin(...rest) { // ...rest는 [7, 3, 5, 2, 4, 1] 이렇게 간다.
    return rest.reduce((a, b) => a < b ? a : b);
}

console.log(findMin(7, 3, 5, 2, 4, 1)); // 1
  • 함수 인자 rest operator는 인자들을 배열로 묶는다.
  • rest에는 숫자들이 배열로 담긴다.
  • reduce함수로 min 값을 리턴한다.

 

📝 객체 인자 Rest Operator

const o = {
    name: "test",
    age: 23,
    address: "Street",
    job: "FE",
};

const { age, name, ...rest } = o;

console.log(rest);
/*
    {
    address:"Street",
    job:"FE"
    }
*/
  • 객체의 rest operator는 지정된 필드 외의 나머지 필드를 객체로 묶는다.
  • age, name을 제외한 나머지 필드는, rest변수로 할당된다.
  • 배열의 경우, 인자가 하나도 없다면 rest operator로 묶을 수 없다.
    • 인자가 하나도 없더라도, rest operator는 빈 배열을 반환한다.

 

📝 배열 인자 Rest Operator

function sumArray(sum, arr) {
    if (arr.length === 0) {
        return sum;
    }
    const [head, ...tail] = arr;
    return sumArray(sum + head, tail);
}

console.log(sumArray(0, [1, 2, 3, 4, 5])); // 15
  • 배열의 rest operator는 나머지 인자를 다시 배열로 묶는다.
  • sumArray의 tail변수는 첫 번째 원소 head를 제외한 나머지 값들을 다시 배열로 묶는다.
  • tail은 하나씩 줄어들게 되며 길이가 0이 되면 합을 반환한다.
반응형