let a = 'age'
const user = {
name: 'Mike',
[a]: 30, // 'age'를 직접 입력하는 대신 대괄호([])로 묶어줌
}
console.log(user)
// {
// "name": 'Mike',
// "age": 30,
// }
const user = {
[1+4]: 5,
["안녕"+"하세요"]: "Hello",
}
console.log(user)
// {
// "5": 5,
// "안녕하세요": "Hello",
// }
대괄호로 사용 시, 해당 변수에 할당된 값이 들어감
key
가 될지 모르는 경우 → 유용 function makeObj(key, val){
return {
[key]: val
}
}
const obj = makeObj('성별', "male")
console.log(obj) // { '성별': 'male' }
객체 복제
const user = {
name: "Mike",
age: 30
}
const cloneUser = user;
user
변수에는 객체에 대한 참조 값(객체가 저장되어 있는 메모리 주소)이 저장됨. (객체 자체가 들어있는 것이 아니라)
즉, const cloneUser = user;
는 참조 값만 복사. (객체 복사x)
Object.assign(초기값, 초기값과 병합 될 것)
- 빈 객체에 병합
newUser
의name
을 바꿔도user
는 안 변함.
⇒newUser != user
- 기존 객체에 병합
- 병합 시, key가 같다면
덮어쓰게 됨 (2번째 인자의 객체 값으로)
- 2개 이상의 객체 병합
키 배열 반환
const user = {
name: 'Mike',
age: 30,
gender: 'male',
}
console.log(Object.keys(user)) // ["name","age","gender"]
값 배열 반환
const user = {
name: 'Mike',
age: 30,
gender: 'male',
}
console.log(Object.values(user)) // ["Mike",30,"male"]
키 /값 배열 반환
const user = {
name: 'Mike',
age: 30,
gender: 'male',
}
console.log(Object.entries(user))
// [
// [ 'name', 'Mike' ],
// [ 'age', 30 ],
// [ 'gender', 'male' ]
// ]
키/값 배열을 객체로
const user = [
[ 'name', 'Mike' ],
[ 'age', 30 ],
[ 'gender', 'male' ]
]
console.log(Object.fromEntries(user))
// { name: 'Mike', age: 30, gender: 'male' }
참고