소소한 개발/javaScript

spread와 rest 문법

myungmin 2022. 2. 13. 07:00

spread

    const slime = {
        name: '슬라임'
    };

    const cuteSlime = {
        ...slime,
        attribute: 'cute'
    };

    const purpleCuteSlime = {
        ...cuteSlime,
        color: 'purple'
    };

    console.log(slime);
    console.log(cuteSlime);
    console.log(purpleCuteSlime);


    // console창
    {name: "슬라임"}
    {name: "슬라임", attribute: "cute"}
    {name: "슬라임", attribute: "cute", color: "purple"}
  • 여기서 사용한 ... 문자가 바로 spread 연산자 이다.
  • spread 연산자는 배열에서도 사용 할 수 있다.
  •     const animals = ['개', '고양이', '참새'];
        const anotherAnimals = [...animals, '비둘기'];
        console.log(animals);
        console.log(anotherAnimals);
    
    
        // console창
        ["개", "고양이", "참새"]
        ["개", "고양이", "참새", "비둘기"]
    
  • 배열에서 spread 연산자를 여러번 사용 할 수도 있다.
  •     const numbers = [1, 2, 3, 4, 5];
    
        const spreadNumbers = [...numbers, 1000, ...numbers];
        console.log(spreadNumbers); // [1, 2, 3, 4, 5, 1000, 1, 2, 3, 4, 5]
    

 

rest

  • rest는 생김새는 spread 랑 비슷한데, 역할이 매우 다름
  • rest는 객체, 배열, 그리고 함수의 파라미터에서 사용이 가능
    const purpleCuteSlime = {
        name: '슬라임',
        attribute: 'cute',
        color: 'purple'
    };

    const { color, ...rest } = purpleCuteSlime;
    console.log(color);
    console.log(rest);


    // console 창
    purple
    Object {name: "슬라임", attribute: "cute"}
  • rest는 객체와 배열에서 사용 할 때는 이렇게 비구조화 할당 문법과 함께 사용
  • 주로 사용 할 때는 위와 같이 rest라는 키워드를 사용하게 된다.
  • 추출한 값의 이름이 꼭 rest 일 필요는 없다.
  •     const purpleCuteSlime = {
            name: '슬라임',
            attribute: 'cute',
            color: 'purple'
        };
    
        const { color, ...cuteSlime } = purpleCuteSlime;
        console.log(color);
        console.log(cuteSlime);
    
  • 이어서 attribute 까지 없앤 새로운 객체를 만들고 싶다면 이렇게 해주면 된다.
  •     const purpleCuteSlime = {
            name: '슬라임',
            attribute: 'cute',
            color: 'purple'
        };
    
        const { color, ...cuteSlime } = purpleCuteSlime;
        console.log(color);
        console.log(cuteSlime);
    
        const { attribute, ...slime } = cuteSlime;
        console.log(attribute);
        console.log(slime);
    
    
        // console 창
        purple
        Object {name: "슬라임", attribute: "cute"}
        cute
        Object {name: "슬라임"}
반응형