[ 모던 자바스크립트 스터디 ] 디스트럭처링 할당

2022. 10. 29. 20:21·Archive/Develop
728x90
반응형

디스트럭처링 할당(구조 분해 할당)은 구조화된 배열과 같은 이터러블 또는 객체를

destructuring하여 1개 이상의 변수에 개별적으로 할당하는 것이다.

 

배열 디스트럭처링 할당

 

const arr = [1, 2, 3];

const [one, two, three] = arr;

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

 

 

 

const [x, y] = [1, 2];

 

배열 디스트럭처링 할당의 기준은 배열의 인덱스다.

이때 변수의 개수와 이터러블의 요소 개수가 반드시 일치할 필요는 없다.

 

 

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

const [c, d] = [1];
console.log(c, d); // 1 undefined

const [e, f] = [1, 2, 3];
console.log(e, f); // 1 2

const [g, , h] = [1, 2, 3];
console.log(g, h); // 1 3

// 기본값 설정

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

 

 

배열 디스트럭처링 할당은 배열과 같은 이터러블에서 필요한 요소만 추출해

변수에 할당하고 싶을 때 유용하다.

 

function parseURL(url = '') {
	const parsedURL = url.match(/^(\w+):\/\/([^/]+)\/(.*)$/);
    console.log(parsedURL);
    
    if (!parsedURL) return {};
    
    const [, protocol, host, path] = parsedURL;
    return {protocol, host, path};
}

const parsedURL = parseURL('https://developer.mosilla.org/ko/docs/Web/Javascript');
console.log(parsedURL);

 

 

 

배열 디스트럭처링 할당을 위한 변수에 Rest 파라미터와 유사하게 Rest 요소(...)을 사용할 수 있다.

물론 Rest 요소는 반드시 마지막에 위치해야한다.

 

const [x, ...y] = [1, 2, 3];
console.log(x, y); // 1 [2, 3]

 

 

객체 디스트럭처링 할당

 

const user = {firstName: 'Bi', lastName: 'Hong'};
const {lastName, firstName} = user;

console.log(firstName, lastName); // Bi Hong

 

ES6의 객체 디스트럭처링 할당은 객체의 각 프로퍼티를 객체로부터 추출하여 1개 이상의 변수에 할당한다.

 

이때 할당 기준은 프로퍼티 키다. 선언된 변수 이름과 프로퍼티 키가 일치하면 할당된다.

 

const user = {firstName: 'Bi', lastName: 'Hong'};

const {lastName: ln, firstName: fn} = user;
console.log(fn, ln); //Bi Hong

 

객체 디스트럭처링 할당을 위한 변수에 기본값을 설정할 수 있다.

 

const user = {firstName = 'Bi', lastName} = {lastName: 'Hong'};

console.log(firstName, lastName); //Bi Hong

const {firstName: fn = 'Bi', lastName: ln} = {lastName: 'Hong'};
console.log(fn, ln); // Bi Hong

 

객체 디스트럭처링 할당은 객체에서 프로퍼티 키로 필요한 프로퍼티 값만 추출해

변수에 할당하고 싶을 때 유용하다.

 

 

const str = 'Hello';
const {length} = str;
console.log(length); // 5

const todo = {id: 1, content: 'HTML', completed: true};
const {id} = todo;
console.log(id); // 1

 

 

객체 디스트럭처링 할당은 객체를 인수로 전달받는 함수의 매개변수에도 사용할 수 있다.

 

function printTodo({ content, completed }) {
	console.log(`할일 ${todo.content}은 ${todo.completed ? '완료' : '비완료'} 상태입니다.`);
}

printTodo({id: 1, content: 'HTML', completed: true}); // 할일 HTML은 완료 상태입니다.

 

 

배열의 요소가 객체인 경우 배열 디스트럭처링 할당과 객체 디스트럭처링 할당을 혼용할 수 있다.

 

 

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

const [, {id}] = todos;

console.log(id); // 2

 

 

객체 디스트럭처링 할당을 위한 변수에 Rest 파라미터나 Rest 요소와 유사하게

Rest 프로퍼티 ... 을 사용할 수 있다.

 

const {x, ...rest} = {x: 1, y: 2, z: 3};
console.log(x, rest); // 1 {y:2, z: 3}
728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ 모던 자바스크립트 스터디 ] Map  (0) 2022.10.31
[ 모던 자바스크립트 스터디 ] Set (add, delete, forEach, clear ...)  (0) 2022.10.31
[ Nest.js 메모리 누수 ] 내 메모리, 누가 자꾸 훔쳐먹어요  (0) 2022.10.25
[ 모던 자바스크립트 스터디 ] 스프레드 문법  (0) 2022.10.25
[ 모던 자바스크립트 스터디 ] Symbol  (0) 2022.10.22
'Archive/Develop' 카테고리의 다른 글
  • [ 모던 자바스크립트 스터디 ] Map
  • [ 모던 자바스크립트 스터디 ] Set (add, delete, forEach, clear ...)
  • [ Nest.js 메모리 누수 ] 내 메모리, 누가 자꾸 훔쳐먹어요
  • [ 모던 자바스크립트 스터디 ] 스프레드 문법
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    Python
    오라클
    백준 문제풀이
    코드업 파이썬 기초 100제
    파이썬 기초 문제
    파이썬 알고리즘
    파이썬 기초
    파이썬
    자바스크립트 API
    비박스
    docker
    자바스크립트
    백준 파이썬
    카카오 100일 프로젝트
    자바스크립트 객체
    백준 풀이
    javascript
    C++
    Codeup
    장고
    Django
    oracle db
    코드업
    파이썬 백준
    Oracle
    Git
    코드업 기초
    백준
    파이썬 문제
    보안뉴스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ 모던 자바스크립트 스터디 ] 디스트럭처링 할당
상단으로

티스토리툴바