NBC - JS 2주차 강의 정리 : 구조분해할당, 전개 구문(Spread Operator)

2024. 7. 24. 09:31·프론트엔드/React
목차
  1. 구조분해할당
  2. 단축 속성명 : property shorthand
  3. 전개 구문 : spred operator

 

 

구조분해할당

destructuing
de : not / structure : 구조

배열이나, 객체의 속성을 분해해서 변수에 넣는 방법

 

 

1. 배열의 경우 (순서가 중요)

let [value1, value2] = [1, "one"];
console.log(value1); // 1
console.log(value2); // "one"

let arr = ["value1", "value2", "value3"];
let [a, b, c, d] = arr;
console.log(a); // value1
console.log(b); // value2
console.log(c); // value3
console.log(d); // undefined (초기값이 설정되어있다면 4가 출력됨) ex) let [a, b, c, d=4] = arr;

 

 

2. 객체의 경우 (key가 중요)

let { name, age } = {
  name: "jang",
  age: 31,
};

console.log(name, age); // "jang", 31 출력

 

 

3. 새로운 이름으로 할당

let user = {
  name: "jang",
  age: 31,
};

let { name: newName, age: newAge } = user;
console.log(newName, newAge); // "jang", 31 출력

 

 

 


 

 

단축 속성명 : property shorthand

key와 value가 같으면 생략이 가능

const name = "jang";
const age = 30;

const user = { 
  name, // name의 경우 key와 value가 같으니 생략 가능
  newAge: age
};

// console.log(user.name, user.age); // jang 30 출력


// key와 value의 이름이 값은 경우
const name = "jang";
const age = 30;

const user = { name, age };  // 배열같아 보이지만 객체
const user = { name: name, age: age };  // 위와 같음

 

 

 

전개 구문 : spred operator

반복 가능한 객체에 적용할 수 있는 문법.

배열이나 문자열 등을 요소 하나 하나로 전개 시킬 수 있음

const arr = [1, 2, 3, 4, 5];
const str = "string";

console.log(...arr); // 1 2 3 4 5
console.log(...str); // "s" "t" "r" "i" "n" "g"

 

 

배열

let arr = [1, 2, 3];
let newArr = [...arr];
console.log(...arr); // 1 2 3 출력
console.log(newArr); // [1,2,3] 출력

 

 

배열 병합

기존 concat 메서드를 이용했던 결합, ES6에서는 spread 연산자를 통해 더 깔끔하게 병합이 가능해졌다.

// 기존 방식
let arr1 = [1,2,3]; 
let arr2 = [4,5,6]; 

let arr = arr1.concat(arr2); 
console.log(arr); // [ 1, 2, 3, 4, 5, 6 ] 

// ES6 spread operator
let arr1 = [1,2,3]; 
let arr2 = [4,5,6]; 

let arr = [...arr1, ...arr2]; 
console.log(arr); // [ 1, 2, 3, 4, 5, 6 ]

 

 

추가로 보자면 이런 다양한 형태의 배열 병합을 수행 할 수 있다.

let arr1 = [1,2,3]; 
let arr2 = [4,5,6]; 
arr1.push(...arr2) 

console.log(arr1); // [1,2,3,4,5,6]


let arr1 = [1,2];
let arr2 = [0, ...arr1, 3, 4];

console.log(arr2); // [0, 1, 2, 3, 4]

 

 

 

배열 복사

새로운 배열에 push를 해서 참조를 했다던지, map 함수로 배열을 복사했다면 ES6에서는 Spread 연산자를 활용해 편하게 가능해졌다.

// ES6 spread operator
let arr1 = ['철수','영희']; 
let arr2 = [...arr1]; 

arr2.push('바둑이'); 

console.log(arr2); // [ "철수", "영희", "바둑이" ]
// 원본 배열은 변경되지 않습니다.
console.log(arr1); // [ "철수", "영희" ]

 

 

객체

객체 복사 또는 업데이트 가능

let user = {
  name: "jang",
  age: 30,
};

let user2 = { ...user };
console.log(user2); // { name: 'jang', age: 30 } 출력

 

 

객체의 복사 또는 프로퍼티를 업데이트 할 수 있다.

let currentState = { name: '철수', species: 'human'};
currentState = { ...currentState, age: 10}; 

console.log(currentState)// {name: "철수", species: "human", age: 10}

// 객체의 프로퍼티를 오버라이드 함으로써 객체가 업데이트
currentState = { ...currentState, name: '영희', age: 11}; 
console.log(currentState); // {name: "영희", species: "human", age: 11}

 

 

 

나머지 매개변수 : rest parameter

인자의 개수와 상관없이 모든 인자를 더하는 함수를 구현하기 쉬움

function exampleFunc(a, b, c, ...args) {
  console.log(a, b, c); // 1 2 3 출력
  console.log(...args); // 4 5 6 출력
  console.log(args); // [4, 5, 6] 출력
}
exampleFunc(1, 2, 3, 4, 5, 6);

 

'프론트엔드 > React' 카테고리의 다른 글

NBC - JS 개인프로젝트 : api로 받아온 데이터 화면에 뿌리기 (promise.all, aysnc, await)  (0) 2024.07.26
NBC - JS 2주차 강의 정리 : Map, Set  (0) 2024.07.24
NBC - JS 2주차 강의 정리 : 일급 객체로서의 함수  (1) 2024.07.24
NBC - JS 1주차 강의 정리 : 반복문  (2) 2024.07.23
NBC - JS 1주차 강의 정리 : 객체, 배열  (0) 2024.07.23
  1. 구조분해할당
  2. 단축 속성명 : property shorthand
  3. 전개 구문 : spred operator
'프론트엔드/React' 카테고리의 다른 글
  • NBC - JS 2주차 강의 정리 : Map, Set
  • NBC - JS 2주차 강의 정리 : 일급 객체로서의 함수
  • NBC - JS 1주차 강의 정리 : 반복문
  • NBC - JS 1주차 강의 정리 : 객체, 배열
장쫑이이
장쫑이이
  • 장쫑이이
    JongHoy
    장쫑이이
  • 전체
    오늘
    어제
    • 코딩공부하기 (41)
      • 프론트엔드 (41)
        • Next.js (12)
        • React (16)
        • TypeScript (2)
        • 상태관리 (1)
        • HTML&CSS (1)
        • 기타 (9)
      • 과거 공부 내용 (0)
        • JSCODE 그룹스터디 (0)
        • JS 객체 지향 프로그래밍 (0)
        • 리엑트 (0)
        • 제로초 - 웹 게임을 만들며 배우는 리엑트 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    setAttribute
    토글
    속성 추가
    팀프로젝트
    Filter
    destructuring
    useState
    reduce
    isNan
    While문
    행렬의 덧셈
    필터링
    LastIndexOf
    유클리드 호제법
    이중 for문
    slice
    github
    styled-components
    git
    map
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
장쫑이이
NBC - JS 2주차 강의 정리 : 구조분해할당, 전개 구문(Spread Operator)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.