JavaScript / 구조분해 할당
📌 Today I Learned
- 구조분해 할당
let users = ['kia', 'hundai', 'ssangyong'];
let [user1, user2, user3, user4] = users;
console.log(user1) // 'kia'
console.log(user2) // 'hundai'
console.log(user3) // 'ssangyong'
console.log(user4) // undefined (해당하는 값이 없기 때문)
let users = ['kia', 'hundai', 'ssangyong'];
let [user1='1', user2='2', user3='3', user4='4'] = users;
console.log(user1) // 'kia'
console.log(user2) // 'hundai'
console.log(user3) // 'ssangyong'
console.log(user4) // '4' (기본값 출력)
let str = "Mike-Tom-Jane";
let [user1, user2, user3] = str.split('-'); // ['Mike', 'Tom', 'Jane']
// str.split()은 `배열`로 출력
// 아래 코드와 동일하다
let user1 = users[0]; // 'Mike'
let user2 = users[1]; // 'Tome'
let user3 = users[2]; // 'Jane'
let [user1, ,user2] = ['Mike', 'Tom', 'Jane', 'Tony'];
// 공백과 쉼표를 이용해 일부 반환값(불필요한 배열 요소)를 무시할 수 있다
console.log(user1); // 'Mike'
console.log(user2); // 'Jane'
let a = 1;
let b = 2;
// a값을 b값으로 만들고 싶을 때
let c = a; // 임시 변수 c에 a 값을 저장해 두고 진행
a = b;
b = c;
------------------------------
[a, b] = [b, a];
// 구조 분해를 사용하면 임시 변수 c가 필요 없다
let user = {name: 'Mike', age: 30};
let {name, age} = user; // name과 age 위치가 바뀌어도 제대로 작동
// 아래 코드와 동일하다
let name = user.name; // 'Mike'
let age = user.age; // 30
let user = {name: 'Mike', age: 30};
let {name: userName, age: userAge} = user;
console.log(userName); // 'Mike'
console.log(userAge); // 30
let user = {name: 'Mike', age: 30};
let {name, age, gender} = user; // 'Mike', 30, undefined
// 해당 객체 안에 값이 없을 경우 undefined가 뜬다
let {name, age, gender = 'male'} = user; // 'Mike', 30, 'male'
// 배열과 같이 기본값을 줄 수 있다
// 객체 안에 값이 없어서 undefined일 경우 기본값을 반환
-------------------------------------------------------------------------
let user = {
name: 'Jane'
age: 20,
gender: 'female'
};
let {name, age, gender = 'male'} = user;
console.log(gender); // 'female'
const user = {
name: "Mike",
age: 20,
cat: {
name: "chue",
age: 2,
species: {
name: "korean shorthair",
},
},
};
const changedUser = {
...user,
name: "Jack",
age: 30,
};
console.log(changedUser)
//{
// name: 'Jack',
// age: 30,
// cat: {
// name: 'chue',
// age: 2,
// species: { name: 'korean shorthair' }
// }
//}
const changedCat = {
...user,
cat: {
...user.cat,
species: "Black Cat",
},
};
console.log(changedCat)
//{
// name: 'Mike',
// age: 20,
// cat: { name: 'chue', age: 2, species: 'Black Cat' }
//}