구조 분해 할당

2024. 10. 25. 20:54·웹/JS

자바스크립트의 구조분해할당을 활용하면 배열이나 객체의 값을 쉽게 추출해 변수에 할당할 수 있다.

 

 

1. 구조 분해 할당

1-1. 배열 구조 분해 할당

배열의 각 요소를 변수에 할당한다.

const arr = [1, 2, 3];
const [a, b, c] = arr;

console.log(a); // 1
console.log(b); // 2
console.log(c); // 3

 

배열의 특정 위치의 값만 필요한 경우 필요없는 부분을 생략하고 변수에 할당할 수 도 있다.

const arr = [1, 2, 3, 4];
const [first, , third] = arr; // 1번 인덱스를 비우고 3번 인덱스를 생략함

console.log(first); // 1
console.log(third); // 3

 

 

1-2. 객체 구조 분해 할당

객체의 경우에는 key를 기준으로 해당 key의 value를 변수에 할당할 수 있다.

const obj = { name: 'Alice', age: 25 };
const { name, age } = obj;

console.log(name); // 'Alice'
console.log(age);  // 25

 

배열과 마찬가지로 필요한 키만 골라서 할당할 수 있으며 새로운 이름으로 할당하는것도 가능하다.

const obj = { name: 'Alice', age: 25 };
const { name: userName, age } = obj; // name 대신 userName이라는 새로운 이름으로 할당됨

console.log(userName); // 'Alice'
console.log(age);      // 25

 

 

 

 

 

2. 구조 분해 할당 활용법

구조 분해 할당은 여러가지 상황에 유용하게 사용이 가능하다. 이 글에서 다루지 않는 여러가지 활용법은 아래 MDN 구조분해할당 글을 통해 확인할 수 있다.

 

구조 분해 할당 - JavaScript | MDN

 

구조 분해 할당 - JavaScript | MDN

구조 분해 할당 구문은 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식입니다.

developer.mozilla.org

 

 

2-1. 기본값 설정

구조 분해 할당에서 변수를 지정할때 비어있는 경우를 대비하여 기본값을 설정해줄 수 있다.

// 배열의 기본값 설정
const [a=5, b = 2] = [1];
console.log(a); // 1
console.log(b); // 2

// 객체의 기본값 설정
const { a = 10, b = 5 } = { a: 3 };
console.log(a); // 3
console.log(b); // 5

할당 할 값이 있을경우 그 값을 기본으로 사용하고 없는경우에 기본값을 사용한다.

 

2-2. 변수 값 교환하기

변수 값 교환에는 비어있는 변수 하나를 추가로 만들어 교환을 위한 공간으로 활용하는것이 보통이지만 구조 분해 할당을 활용하면 보다 쉽게 변수값 교환이 가능하다.

const a = 1;
const b = 3;

[a, b] = [b, a];
console.log(a); // 3
console.log(b); // 1

 

 

2-3. 배열, 객체의 남은 값 일괄 할당하기

아주 긴 배열이나 객체 등에서 원하는 값만 할당하여 사용하고 나머지는 다시 배열이나 객체로 묶어 사용하는것도 가능하다.

// 배열의 나머지값 할당
const arr = [1, 2, 3];
const [a, ...b] = arr;
console.log(a); // 1
console.log(b); //[2, 3]

// 객체의 나머지값 할당
const obj = { x: 1, y: 2, z: 3 };
const { x, ...rest } = obj;
console.log(x); // 1
console.log(rest); // { y: 2, z: 3 }

 

'웹 > JS' 카테고리의 다른 글

three.js로 3D 책 구현하기  (1) 2024.12.20
Debounce와 Throttle을 통한 최적화  (0) 2024.12.13
배열 내에 참조타입(객체 등)이 있을때 중복 제거하기  (0) 2024.10.15
한국환경공단 대기오염 데이터 활용하기 (parseStringPromise, find, startsWith, padStart)  (0) 2024.10.13
화살표 함수의 특징  (0) 2024.09.30
'웹/JS' 카테고리의 다른 글
  • three.js로 3D 책 구현하기
  • Debounce와 Throttle을 통한 최적화
  • 배열 내에 참조타입(객체 등)이 있을때 중복 제거하기
  • 한국환경공단 대기오염 데이터 활용하기 (parseStringPromise, find, startsWith, padStart)
루트노트
루트노트
  • 루트노트
    루트노트
    루트노트
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (74)
      • 웹 (46)
        • HTML, CSS (11)
        • JS (11)
        • Node.js (3)
        • React (10)
        • Next.js (8)
        • MongoDB (1)
        • Design (2)
      • 애플리케이션 (5)
        • Swift (4)
        • React Native (1)
      • AI (0)
        • 컴퓨터 비전 (영상처리) (0)
      • 임베디드 (4)
        • 아두이노 (0)
        • 라즈베리파이 (0)
        • 젯슨 (1)
        • 리눅스 (3)
      • 컴퓨터 과학 (18)
        • 자료구조 (0)
        • 알고리즘 • 수학 (3)
        • 백준 문제풀이 (4)
        • 프로그래머스 문제풀이 (9)
        • 기타 (2)
      • 개인 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 최근 글

  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
루트노트
구조 분해 할당
상단으로

티스토리툴바