본문 바로가기
Programming/Javascript

[Javascript] 구조 분해 할당

by Bam_t 2021. 5. 7.
728x90

ES2015에서 등장한 구조 분해 할당에 대해 다룹니다. 구조 분해는 배열이나 객체의 특정한 자료를 이용할 때 사용하는 방식입니다.


1. 배열의 구조 분해 할당

1-1. 변수에 배열의 값 할당

기존에 배열의 요소를 변수에 할당하기 위해서 다음과 같이 이용했었습니다.

let arr = [1, 2, 3];
let num1 = arr[0];

 

구조 분해 할당을 이용하면 대괄호를 이용하여 인덱스 위치에 변수를 삽입하는 방식으로 편하고 직관적이게 변수에 배열 요소 값을 할당할 수 있습니다.

let arr = [1, 2, 3];
let [num1, num2, num3] = arr;

 

1-2. 존재하지 않는 요소의 기본값 할당

위의 경우에서 배열에 존재하지 않는 인덱스의 요소를 변수에 할당하려고 하면 오류가 발생하거나, ||연상ㄴ자를 통해 기본값을 따로 할당했었습니다.

let arr = [1];
let num1 = arr[0];
let num2 = arr[1] || 1;
//num2에 arr[1]을 할당하는데 arr[1]이 없다면 기본값 1을 할당

 

이랬던 구조를 새로운 구조 분해 할당에서는 ||연산자를 빼버리고 직관적으로 대입 연산자(=)를 이용합니다.

let arr = [1];
let [num1, num2 = 1] = arr;
//num2에 arr[1]을 할당하는데 arr[1]이 존재하지 않으면 기본값으로 1을 설정

대입 연산자를 이용하니 좀 더 직관적이고 알기 쉽게 되었습니다.

 

 


2. 객체의 구조 분해 할당

객체도 분해 할당이 위에서 본 배열과 크게 다르지 않습니다.

 

2-1. 변수에 객체의 값 할당

기존의 객체 값 할당은 다음과 같았습니다.

let obj = {
	key1: '가'
    	key2: '나'
};

let key1 = obj.key1;
let key2 = obj.key2;

 

ES2015의 구조 분해 할당을 이용하면 다음과 같이 코드를 변경할 수 있습니다.

let obj = {
	key1: '가',
    	key2: '나',
};	
let {
	key1,
	key2,
} = obj;

 

 

 

2-2. 할당하는 변수명의 교체

위에서 키 값을 통해 추출한 변수명을 다른 변수명으로 교체하고 싶다면 콜론(:)을 이용하여 새로운 변수명으로 할당합니다.

let obj = {
	key1: '가',
    	key2: '나',
};	
let {
	key1: newVarName, //키 값: 할당할 변수명
	key2,
} = obj;

 

 

2-3. 존재하지 않는 키 값의 기본값 할당

마찬가지로 존재하지 않는 키 값에 기본값을 할당할 수 있는데 기존에는 배열처럼 ||연산자를 이용했습니다.

let obj = {
	key1: '가',
};

let key2 = obj.key2 || '나';

 

ES2015 이후의 구조 분해 할당을 이용하면 다음과 같이 바꿀 수 있습니다.

let obj = {
	key1: '가',
};
let {
	key1,
    	key2 = '나다',
} = obj;


3. 두 변수 값의 치환

기존에 두 변수 값을 치환하려면 '버블 정렬'과 같은 방식을 이용했어야 했었습니다. (메소드도 있고 다른 방법도 많지만 예시는 버블 정렬로 들겠습니다.)

let num1 = 100;
let num2 = 10;

let temp = num2;
num2 = num1;
num1 = temp;

 

이랬던 치환 과정도 ES2015의 구조 분해 할당을 이용하면 다음과 같이 직관적으로 코드가 변경됩니다.

let num1 = 100;
let num2 = 10;

[num1, num2] = [num2, num1];
//[치환시킬 변수] = [치환할 변수 값];


 

 

 

 

728x90

댓글