본문 바로가기
Frontend/JavaScript

JavaScript의 Spread 연산자에 대해 알아보자

by 코딩쥐 2024. 7. 24.

스프레드(spread) 연산자

반복이 가능한(iterable) 객체에서 요소를 하나씩 분리하는데 사용하는 연산자다. 분리하여 나온 결과를 변수에 할당하거나 호출하는 함수의 매개변수 값으로도 사용이 가능하다. 스프레드 연산자를 이용해서 배열의 구조를 해체하고 다시 새로운 배열에 넣을수도 있다. 

  • ... 
    스프레드 연산자는 세 개의 점을 이용한 문법이다. 스프레드 연산자를 이용해서 반복이 가능한 객체들을 합치거나, 요소를 제거하거나 하는 등의 기능을 수행할 수 있다. 
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
    
        // 배열에서 spread연산자(...) 사용
        const arr1 =  [1,2,3,4,5,6];
        const arr2 = arr1;
        
        // arr1을 복사한 다음에, arr2를 분해한 값으로 다시 배열을 생성함
        // 분해한 후 다시 배열을 생성하게 되면 다른 주소를 참조하게된다. 따라서 둘의 동등연산자의 결과가 false가 나온다. 
        const arr2_1 = [...arr2];
        console.log(arr2_1 == arr2); //false

        // arr1과 arr2의 배열을 분해한다음에 두개의 배열을 합치고, 새로운 배열의 값을 추가함
        const arr3 = [...arr1, ...arr2, 8, 9, 6]; // [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 8, 9, 6]
        console.log(arr3);

        // 문자열의 각 문자를 배열로 저장
        const str1 = "abcdefg"
        const arr4 = [...str1];
        console.log(arr4); // ['a', 'b', 'c', 'd', 'e', 'f', 'g']

        // object에도 spread연산자(...)사용 가능
        const obj1 = {
            a : 1,
            b : "안녕"
        }
        const obj2 = {
            a : 5,
            c : "ab"
        }
        // 같은 key값이 있을 경우 마지막에 선언된 key 값을 가져온다.
        const obj3 = {...obj1, ...obj2};
        console.log(obj3); // {a:5, b:"안녕", c:"ab"}

        // 배열의 중간값 제거하기
        const arr5 = [1,3,4,5,9];
        const arr5_1 = arr5.filter((index)=>{
            return index != 4;
        }); 
        console.log(arr5_1); // [1, 3, 5, 9]
        
    </script>
</body>

</html>