개발자의 공부방/Frontend

javascript] 비구조화 할당

  • -
728x90
반응형

비구조화 할당에 대해서 알아보겠다.


비구조화할당에서 기본 값을 지정하는 방법.

const object = { a: 1, b: 2}
const {a, b} = object;
console.log(a);
console.log(b);

console.log("==============================")

function print({a, b}) {
	console.log(a)
    console.log(b)
}

print(object)

 

객체를 비구조화할당하는 방법이다.

name을 꺼내와서 사용해도되지만 {name : nickname} 같이 nickname이라는 명칭으로 사용이 가능하다.

const animal = {
  name : '멍멍이',
  type : '개'
}

//const nickname = animal.name

const {name : nickname} = animal;

console.log(nickname);
console.log(animal)

 

이번에는 배열에서 비구조화할당을 알아보자.

배열에 1, 2가 있을 때 각각 꺼내려면 아래와 같이 사용하는게 일반적이지만

이를 비구조화할당을 사용하면 아래와 같이 변경이 가능하다.

const array = [1, 2];

//일반적인 사용 예시
const one = array[0];
const two = array[1];

console.log(one)
console.log(two)

console.log('=============')

//비구조화 할당 예시
const [oen, two] = array;

console.log(one)
console.log(two)

 

그리고 배열에도 기본값을 설정할 수 있다.

const array = [1];

//비구조화하면서 기본값을 설정
const [oen, two = 2] = array;

console.log(one)
console.log(two)

 

다음은 객체에 깊숙히 담겨있는 값을 꺼내는 방법을 알아본다.

const deepObject = {
	state : {
    	information: {
        	name: '최하준',
            languages: ['korean', 'english', 'chinese']
        }
    },
    value: 5
}

위의 객체에서 값을 꺼내오는 방법은 보통 두가지로 예를 들 수 있다.

 

첫번째는 비구조할당을 두번 사용하는 것이다.

const deepObject = {
	state : {
    	information: {
        	name: '최하준',
            languages: ['korean', 'english', 'chinese']
        }
    },
    value: 5
}

const { name, languages} = deepObject.state.informaion;
const { value } = deepObject;

const extracted = {
	name,
    languages,
    value
}

//extracted 안에는 원래 name: name, languages: languages... 이렇게 선언해야하지만,
//특정 키 이름으로 선언된 값이 있다면 value값을 설정하는 것을 생략해도 된다.


consoloe.log(extracted)

 

두번째 방법은 비구조할당을 한번하면서 다 빼오는 방법이다.

const deepObject = {
	state : {
    	information: {
        	name: '최하준',
            languages: ['korean', 'english', 'chinese']
        }
    },
    value: 5
}

const {
	state: {
    	information: {
        	name, languages
            //languages는 배열이라서 특정키 값으로 빼올 수도 있다.
            //languages[firstLang, secondLang]
        }
    },
    value
} = deepObject;

const extracted = {
	name,
    languages,
    //firstLang,
    //secondLang
    value
}


consoloe.log(extracted)
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.