본문 바로가기

Front End/Javascript

[JavaScript] Spread Operator(전개 연산자) 함수에서 사용

함수의 파라미터 부분에서도 비구조화 할당을 사용할 수 있습니다.
이러한 문법은 특히 API 응답 값을 처리하는데에 유용하게 사용됩니다.

 

spread_ex10.html 파일을 다음과 같이 만듭니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>전개 연산자 함수에서 사용</title>
    <script>
        function showUser({name, age, gender}){
            return name + "(" + age +"세, " + (gender ? "남":"여"+ ")";
        }
       let users = [ 
                {name:"김종서", age:33, gender:true},
                {name:"이순신", age:25, gender:true},
                {name:"강감찬", age:31, gender:true},
                {name:"지문덕", age:42, gender:false},
                {name:"개소문", age:22, gender:false}
            ];
 
        document.write("1번 : " +  showUser(users[0]) + "<br>");
        document.write("2번 : " +  showUser(users[1]) + "<br>");
        document.write("<hr>");
        
        users.map((user,index) => {
            document.write(index+1 + "번 : " +  showUser(user) + "<br>");
        });
        document.write("<hr>");
 
        // map함수의 파라미터에도 바로 사용할 수 있습니다.
        users.map((user,index) => {
            document.write(index+1 + "번 : " +  JSON.stringify(user) + "<br>");
        });
        document.write("<hr>");
        
        // 배열 내 객체들은 for of 문을 사용하여 비구조화 할 수 있습니다.
        for({name : n, age : a, gender : g} of users){
            document.write(n + "(" + a +"세, " + (g ? "남":"여"+ ")<br>");
        }
        document.write("<hr>");
    </script>
</head>
<body>
</body>
</html>
cs

 

실행 결과 입니다.

 

 

중첩된 객체 및 배열 역시 비구조화 할 수 있습니다.

 

spread_ex11.html 파일을 다음과 같이 만듭니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>전개 연산자 함수에서 사용</title>
    <script>
       // 중첩된 객체 및 배열의 비구조화  : 중첩된 객체 및 배열 역시 비구조화 할 수 있습니다.
       let boxOffice = {
            "boxofficeType""일별 박스오피스",
            "date""20231010",
            "dailyBoxOfficeList": [
            {
                "rank""1",
                "movieNm""30일",
                "openDt""2023-10-03",
            },
            {
                "rank""2",
                "movieNm""천박사 퇴마 연구소: 설경의 비밀",
                "openDt""2023-09-27",
            },
            {
                "rank""3",
                "movieNm""1947 보스톤",
                "openDt""2023-09-27",
            },
            {
                "rank""4",
                "movieNm""크리에이터",
                "openDt""2023-10-03",
            },
            {
                "rank""5",
                "movieNm""더 넌 2",
                "openDt""2023-09-27",
            },
            {
                "rank""6",
                "movieNm""거미집",
                "openDt""2023-09-27",
            },
            {
                "rank""7",
                "movieNm""사나: 저주의 아이",
                "openDt""2023-10-04",
            },
            {
                "rank""8",
                "movieNm""화란",
                "openDt""2023-10-11",
            },
            {
                "rank""9",
                "movieNm""퍼피 구조대: 더 마이티 무비",
                "openDt""2023-10-06",
            },
            {
                "rank""10",
                "movieNm""잠",
                "openDt""2023-09-06"
            }
            ]
        }
        document.write(boxOffice.boxofficeType + "(" + boxOffice.date+ ")<br>");
        document.write("<hr/>");
        var {boxofficeType:type, date:today, dailyBoxOfficeList: dailyList } = boxOffice;
        document.write(type + "(" + today + ")<br>");
        document.write("<hr/>");
        
        dailyList.map((movie)=>{
            document.write(movie.rank + ". " + movie.movieNm  + "(" + movie.openDt + ")<br>");
        });
        document.write("<hr/>");
 
        dailyList.map(({rank, movieNm: movie_name,openDt: open_date})=>{
            document.write(rank + ". " + movie_name  + "(" + open_date + ")<br>"); 
        });
        document.write("<hr/>");
        
        for({rank, movieNm: movie_name,openDt: open_date} of dailyList){
            document.write(rank + ". " + movie_name  + "(" + open_date + ")<br>"); 
        }
        document.write("<hr>");
    </script>
</head>
<body>
</body>
</html>
cs

 

실행 결과 입니다.