objects & properties
object에서 property 제거
delete objectName.propertyName
let obj = { name : "jason", age: 20 }
delete obj.name
obj
조건적 프로퍼티
condition | let obj = { ...( condition && { k:"value" }) } |
---|
true | { ...( true &&{ k:"value" }) } => { ...{ k:"value" } } => { k : "value" } |
false | { ...( false &&{ k:"value" }) } => { ...false } => {} |
- Object.assign 메서드 이용 (ECMAScript2015)
let obj = {
"message":err.message,
"status": err.status || 500,
...((req.app.get('env')==='development') && {"error": err})
}
Object.assign(obj, condition ? { k1 : "val1" } : { k2 : "val2" })
Object.assign(obj, condition && { k3 : "val3" })
Optional Chaninng
- property에 접근할때 . 대신 ?. 를 사용
- undefined 나 null 의 property에 접근하면 TypeError 발생
- ?.로 undefined나 null의 property에 접근하면, TypeError 발생 없이 undefined 리턴
- undefined 나 null 일 가능성이 있는 object의 property에 접근할때 사용
- || 연산과 함께 사용하면 undefined 일때 기본값 설정 가능
let users = [
{ name : "jane", address : { city : "vancouver" }},
{ name : "john", address : { city : "austin" }},
{ name : "jason" } ]
let cities = new Set()
users.forEach(user=> {
let city = user.address?.city
if(!city) return
cities.add(city)
})
let user = users[2]
let residence = user.address?.city || 'homeless'
Destructuring assignment
const kim = {
weight: 82,
height: 190,
name: {
lastName: "kardashain",
middleName: "noel",
firstName: "Kimberly",
},
sisters: ["Kourtney ", "Khloe", "Kendall", "Kylie"],
};
const {
weight,
name: { middleName },
sisters: [, , , kylie],
} = kim;
console.log(weight);
console.log(middleName);
console.log(kylie);