• object : 속성을 가진 값을 저장할때 객체 자료형으로 만든다.
  • array : 요소들을 순서대로 저장할때 배열 자료형으로 만든다.
    작업을 하다보면 객체나 배열 데이터 전부가 아닌, 일부만 필요한 경우가 있다고 한다.
    이럴때 자료를 변수로 ‘분해’ 할 수 있게 해주는 문법이 [ 구조분해할당 ] 이다.


Array 데이터를 변수에 담기

1
2
3
4
5
6
7
const arr = [1, 2, 3];
const a = arr[0];
const b = arr[1];
const c = arr[2];

// 위 코드를 아래와 같이 바꿀 수 있다.
const [a, b, c] = arr;

왼쪽에 선언한 변수 명의 갯수와, 배열 요소의 갯수가 맞지 않으면 값이 제대로 할당되지 않으므로
디폴트값을 넣어줄 수 있다.

1
2
3
4
5
6
7
const arr = [1, 2];

const [a, b, c] = arr;
// c는 undefined

const [a, b, c = 3] = arr;
// c는 3

쉼표를 사용하면, 필요하지 않은 배열의 요소를 버릴 수 있다.

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

const [a, b, , d] = arr;
// 세번째 요소는 필요하지 않음
// a = 1, b = 2, d = 4



Object 데이터를 변수에 담기

1
2
3
4
5
6
7
const person = {
  name: "Jessie",
  age: 30,
  like: "keyboard",
};

const { name, age, like } = person;

원래 peron.name의 형태로 호출해야하는 값을 변수로 선언해 name 으로 값을 불러올 수 있게 했다.
변수로 선언 시, 순서는 중요하지 않고 해당 속성에 들어있는 값을 가져와 변수로 저장하게 된다.

위 코드는 객체의 속성을 변수명으로 가지고와서 사용하게 되는데,
속성: 변수명 으로 변수명을 원하는대로 바꿀수도 있다.

1
2
const { name: n, age: a, like } = person;
// n : Jessie, a : 30, like : keyboard

객체에 없는 값도 추가해줄 수 있는데, 배열에 디폴트 값을 줄때랑은 약간 다르다.
배열은 변수 선언 끝에 = 값의 형태로 일괄 적용할 수 있지만,
객체는 각 속성에 주고싶은 값을 각각 입력해야한다.

1
2
3
4
5
6
7
const person = {
  name: "Jessie",
  age: 30,
};

const { name, age, like = "keyboard", height = 170 } = person;
// name: Jessie, age: 30, like: keyboard, height: 170
1
2
3
4
5
6
7
8
9
const person = {
  name: "Jessie",
  age: 30,
  height: 160,
};

const { name, age, like = "keyboard", height = 170 } = person;
// name: Jessie, age: 30, like: keyboard, height: 160
// height의 디폴트 값으로 선언한 것은 170이지만, 객체 내부 값이 160이므로 160

속성이 많은 복잡한 객체에서 원하는 값만 뽑아오는 것도 가능하다.

1
2
const { name } = person;
//name: Jessie



변수를 객체에 집어넣기

기본적으로 변수를 오브젝트로 만들려면 아래와 같이 할 수 있는데,

1
2
3
4
5
6
7
8
onst name = 'Jessie'
const age = 30

const obj = {
    name: name,
    age: age
}
// name: Jessie, age: 30

Destructuring 문법을 이용하면 아래와 같이 바꿀 수 있다.

1
2
const obj = { name, age };
// 변수명과 속성명이 동일하면 name: name을 name으로 생략 가능



함수의 파라미터에서 활용하기

함수에 객체를 활용하고 싶으면 아래와 같이 할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
const obj = {
  name: "Jessie",
  age: 30,
};

function logText(name, age) {
  console.log(name);
  console.log(age);
}

logText(obj.name, obj.age);
// Jessie 와 30 각각 출력

Destructuring 문법을 활용해 정리하려면
파라미터를 { } 괄호로 묶어주고, 함수 실행 시 객체 이름만 써주면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
const obj = {
  name: "Jessie",
  age: 30,
};

function logText({ name, age }) {
  console.log(name);
  console.log(age);
}

logText(obj);
// Jessie 와 30 각각 출력

배열도 동일하게 적용해볼 수 있다.

1
2
3
4
5
6
7
8
9
const arr = ["Jessie", 30];

function logText([name, age]) {
  console.log(name);
  console.log(age);
}

logText(arr);
// Jessie 와 30 각각 출력

지금 듣는 강의에 나오는 수준으로만 정리했는데
훨씬 디테일하게 활용하는 방법이 많다!
구조분해할당

Leave a comment