프로그래밍/JavaScript

ECMA6 - 디스트럭처링

가라멜 2019. 4. 28. 11:40
반응형

출처 : https://poiemaweb.com/es6-destructuring

 

Destructuring | PoiemaWeb

디스트럭처링(Destructuring)은 구조화된 객체(배열 또는 객체)를 Destructuring(비구조화, 파괴)하여 개별적인 변수에 할당하는 것이다. 배열 또는 객체 리터럴에서 필요한 값만을 추출하여 변수에 할당하거나 반환할 때 유용하다.

poiemaweb.com

 

이 포스팅의 위 출처의 게시글을 공부하며 필기 하듯이 써놓은 내용이므로,

정확한 내용은 위의 출처에서 보는 것이 좋다.

 

 

디스트럭처링은 구조화된 배열 또는 객체를 Destructuring 하여 개별적인 변수에 할당하는 것이다. 배열 또는 객체 리터럴에서 필요한 값만을 추출하여 변수에 할당하거나 반환할 때 유용하다.

 

1. 배열 디스트럭처링

ES5 에서 배열의 각 요소를 배열로부터 디스트럭처링하여 변수에 할당하기 위한 방법은 

// ES5
var arr = [1, 2, 3];

var one   = arr[0];
var two   = arr[1];
var three = arr[2];

console.log(one, two, three); // 1 2 3

 

ES6의 배열 디스트럭처링은 배열의 각 요소를 배열로부터 추출하여 변수 리스트에 할당

// ES6 Destructuring
const arr = [1, 2, 3];

// 배열의 인덱스를 기준으로 배열로부터 요소를 추출하여 변수에 할당
const [one, two, three] = arr;

console.log(one, two, three); // 1 2 3

위처럼 배열 디스트럭처링을 위해서는 할당 연산자 왼쪽에 배열 형태의 변수 리스트가 필요하다.

ES6의 배열 디스트럭철이은 배열에서 필요한 요소만 추출하여 변수에 할당하고 싶은 경우에 유용하다.

Date 객체에서 추출하는 예제

const today = new Date();
const formattedDate = today.toISOString().substring(0, 10);
const [year, month, day] = formattedDate.split('-');
console.log([year, month, day]);

 

2. 객체 디스트럭처링

ES5에서 객체의 각 프로퍼티를 객체로부터 디스트럭처링하여 변수에 할당하기 웋서는 프로퍼티 이름(키)를 사용해야 함

var obj = {fN : 'U' , lN : 'L'};

var fN = obj.fN;
var lN = obj.lN;

conosle.log(fN, lN); // U L

 

ES6의 객체 디스트럭처링은 객체의 각 프로퍼티를 객체로부터 추출하여 변수 리스트에 할당한다. 이때 할당기준은 프로퍼티 이름(키) 이다.

// ES6 Destructuring
const obj = { firstName: 'Ungmo', lastName: 'Lee' };

const { firstName, lastName } = obj;

console.log(firstName, lastName); // Ungmo Lee

 

객체 디스트럭처링을 위해서는 할당 연산자 왼쪽에 객체 형태의 변수 리스트가 필요

const { prop1: p1, prop2: p2 } = { prop1: 'a', prop2: 'b' };
console.log(p1, p2); // 'a' 'b'
console.log({ prop1: p1, prop2: p2 }); // { prop1: 'a', prop2: 'b' }

// 아래는 위의 축약형이다
const { prop1, prop2 } = { prop1: 'a', prop2: 'b' };
console.log({ prop1, prop2 }); // { prop1: 'a', prop2: 'b' }

// default value
const { prop1, prop2, prop3 = 'c' } = { prop1: 'a', prop2: 'b' };
console.log({ prop1, prop2, prop3 }); // { prop1: 'a', prop2: 'b', prop3: 'c' }

 

객체 디스트럭처링은객체에서 프로퍼티 이름으로 필요한 프로퍼티 값만을 추출 가능

const todos = [
  { id: 1, content: 'HTML', completed: true },
  { id: 2, content: 'CSS', completed: false },
  { id: 3, content: 'JS', completed: false }
];

const completedTodos = todos.filter(({ completed}) => completed);
console.log(completedTodos); // id :1 ~~ 

 

Array.prototype.filter 메소드의 콜백 함수는 대상 배열을 순회하며 첫 번째 인자로 대상 배열의 요소를 받는다. 이때 필요한 프로퍼티만을 추출할 수있다.

 

 

반응형

'프로그래밍 > JavaScript' 카테고리의 다른 글

ECMA6 - Module  (0) 2019.04.30
ECMA6 - Class  (0) 2019.04.29
ECMA6 - Enhanced Object property  (0) 2019.04.27
ECMA6 - Extended Parameter Handling  (0) 2019.04.26
ECMA6 - 화살표 함수  (0) 2019.04.25