Spread Operator

김종현·2023년 3월 15일
0

Js

목록 보기
13/16

Rest Operator

-함수의 인자, 배열, 객체 중 나머지 값을 묶어 사용하도록 한다.

  • 함수의 인자 중 나머지
  • 배열의 나머지 인자
  • 객체의 나머지 필드

함수인자 rest operator

-인자들을 배열로 묶는다.

  • rest에는 숫자들이 배열로 담긴다.
  • reduce 함수로 min값을 리턴한다.

객체의 rest operator

-지정된 필드 외의 나머지 필드를 객체로 묶는다.
-age, name을 제외한 나머지 필드는 rest 변수로 할당 된다.

  • 이 때 rest는 객체인 것에 주의해야 한다.

배열의 rest operator

-나머지 인자를 다시 배열로 묶는다.

  • sumArray의tail 변수는 첫번째 원소 head를 제외한 나머지 값들을 다시 배열로 묶는다.
  • tail은 하나씩 줄어들게되며, 길이가 0이 되면 합을 반환한다.

Spread Operator

묶인 배열 혹은 객체를 각각의 필드로 변환한다(펼친다).

  • 객체는 또 다른 객체로의 spread를 지원한다.
  • 배열은 또 다른 배열의 인자, 함수의 인자로의 spread를 지원한다

객체 spread operator

spread operator(...)의 등장 순서에 따라 객체의 필드가 덮어씌워 질 수 있다.

  • o2는 기존 o의 필드를 가져온 뒤 name 과 age만 덮어 씌워서 name : Tom, age : 24가 된다.
  • o3는 기존에 name과 age가 있으나 o의 필드를 후에 덮어 씌워서 name : Daniel, age : 23이 된다.

배열 spread operator

mergeObjects는 주어진 객체들의 필드를 합친다.(고 가정한다)

  • findMinInObject에서는 객체의 필드들 중 최솟값을 반환한다.
  • Object.values(Object.values(obj))는 인자로 받은 객체의 value를 배열로 반환한다.
  • 배열 spread operator로, Math.min의 인자를 넘긴다.

mergeObjects(o1, o2, o3) // { a:1, b:3, c:7 }
findMinInObject({a:1, b:3, c:7}){
  return Math.min(...Object.values({a:1, b:3, c:7}) // Math.min(...[1, 3, 7])
                  //Math.min(1, 3, 7)
                 ) 
}
  • Math.min은 원래 Math.min(1,3,7) 이런 형태로 값을 넘겨야 함. 그런데 spread로 펼쳐서 배열의 각 인자를 하나씩 넘겨준 것과 같음.

    여기 스프레드 이해 안감. -> 펼치는 거임.

https://paperblock.tistory.com/62


수요일 자료 20번 추가하기.

profile
나는 나의 섬이다.

0개의 댓글