배열과 객체 구조 분해 할당
구조 분해 할당은 JavaScript의 표현식으로, 배열과 객체의 요소 및 프로퍼티를 분해하여 그 값을 개별 변수에 할당하는 기능이다. 이를 통해 배열과 객체 내부의 값을 간편하게 추출할 수 있다.
배열의 구조 분해 할당
기본 변수 할당
아래 코드는 각 변수에 해당 값을 할당하고 출력하는 간단한 일반적인 방법이다.
let colors = ["red", "green", "blue"];
let color1 = colors[0];
let color2 = colors[1];
let color3 = colors[2];
console.log(color1); // "red"
console.log(color2); // "green"
console.log(color3); // "blue"
구조 분해 할당 사용
이제, 구조 분해 할당을 사용하여 코드를 더 간결하게 작성을 해보면, 배열의 구조 분해 할당은 대괄호를 사용하며, 할당할 변수를 대괄호 안에 작성할 수 있는데, 아래 코드에서는 colors 배열의 요소를 [color1, color2, color3]로 분해하여 각 변수에 할당하고 있다. 결과는 이전과 동일하다.
let colors = ["red", "green", "blue"];
let [color1, color2, color3] = colors;
console.log(color1); // "red"
console.log(color2); // "green"
console.log(color3); // "blue"
선언 분리 할당
또 다른 방법으로, 변수의 선언과 할당을 분리하여 작성할 수 있는데, 이를 "선언 분리 할당"이라고 하며, 이러한 방식으로 코드를 작성하면 변수를 한 번에 선언하고 값도 할당할 수 있다.
let color1, color2, color3;
[color1, color2, color3] = ["red", "green", "blue"];
console.log(color1); // "red"
console.log(color2); // "green"
console.log(color3); // "blue"
기본값 설정
배열의 구조 분해 할당에서 변수의 수가 배열의 요소 수보다 많을 때, 남은 변수에는 undefined가 할당된다. 이때, 기본값을 설정할 수 있다. 아래 코드에서 color3에는 기본값으로 "blue"가 할당되어 있다. 따라서 배열의 길이보다 변수가 많을 때, 남은 변수에는 기본값이 할당된다.
let colors = ["red", "green"];
let [color1, color2, color3 = "blue"] = colors;
console.log(color1); // "red"
console.log(color2); // "green"
console.log(color3); // "blue"
변수 값 교환하기
배열의 구조 분해 할당은 변수 값 교환에도 유용하게 사용된다. 아래 코드에서는 배열의 구조 분해 할당을 사용하여 a와 b의 값을 교환했다.
let a = 10;
let b = 5;
[a, b] = [b, a];
console.log(a); // 5
console.log(b); // 10
객체의 구조 분해 할당
기본 할당
먼저, 다음과 같이 colors 객체에 색상들을 프로퍼티로 할당한다.
let colors = {
color1: "red",
color2: "green",
color3: "blue"
};
그리고, colors 객체의 각 프로퍼티 값을 color1, color2, color3 변수에 할당하고 값을 출력하자.
let colors = {
color1: "red",
color2: "green",
color3: "blue"
};
let color1 = colors.color1;
let color2 = colors.color2;
let color3 = colors.color3;
console.log(color1); // "red"
console.log(color2); // "green"
console.log(color3); // "blue"
구조 분해 할당 사용
이제, 구조 분해 할당을 사용하여 코드를 더 간결하게 작성해보면, 객체의 구조 분해 할당은 중괄호를 사용하고, 할당할 변수를 중괄호 안에 작성한다. 아래 코드에서는 colors 객체의 프로퍼티를 { color1, color2, color3 }로 분해하여 각 변수에 할당하고 있다.
let colors = {
color1: "red",
color2: "green",
color3: "blue"
};
let { color1, color2, color3 } = colors;
console.log(color1); // "red"
console.log(color2); // "green"
console.log(color3); // "blue"
새로운 변수 이름으로 할당하기
객체의 프로퍼티 이름과 변수 이름이 다를 때, 변수에 다른 이름으로 할당할 수 있는데, 아래 코드에서는 color1, color2, color3을 각각 newColor1, newColor2, newColor3로 변수에 할당하고 있다.
let colors = {
color1: "red",
color2: "green",
color3: "blue"
};
let { color1: newColor1, color2: newColor2, color3: newColor3 } = colors;
console.log(newColor1); // "red"
console.log(newColor2); // "green"
console.log(newColor3); // "blue"
기본값 설정
객체의 구조 분해 할당에서 변수의 수가 프로퍼티의 수보다 많을 때, 남은 변수에는 undefined가 할당된다. 이때, 기본값을 설정할 수 있다. 아래 코드에서는 color3에 기본값으로 "blue"가 할당되어 있다. 따라서 객체의 프로퍼티가 부족하게 할당될 때, 기본값이 할당된다.
let colors = {
color1: "red",
color2: "green"
};
let { color1, color2, color3 = "blue" } = colors;
console.log(color1); // "red"
console.log(color2); // "green"
console.log(color3); // "blue"
결론
배열과 객체의 구조 분해 할당은 JavaScript에서 데이터를 효율적으로 추출하고 다룰 때 매우 유용한 기능이다.
'Javascript' 카테고리의 다른 글
몫의 정수 부분만 구하는 방법들 (1) | 2023.11.23 |
---|---|
파괴적 처리와 비파괴적 처리(destructive and non-destructive) (23) | 2023.11.22 |
배열과 문자열에서 중복값 제거할 수 있는 방법들 (30) | 2023.11.20 |
동기(Synchronous)와 비동기(Asynchronous) (16) | 2023.11.20 |
spread 연산자(...)와 rest 파라미터(...)는 같은 것일까? (34) | 2023.11.19 |