基于第三个对象将属性从对象"移动"到新对象



我有一个包含多个属性的对象。对于第三个对象中给定的道具列表,我想要从原始对象中"移动"属性并将它们放入新对象中。

我现在有一个"长手"的方法来做这件事,就像下面这样。然而,这会创建2个新对象,而不仅仅是"移动"一些键:

let pets = {
'cat': {},
'dog': {},
}
let animals = {
'cat': 'black',
'dog': 'white',
'whale': 'blue',
'albatross': 'grey',
}
let aPet = {}
let notAPet = {}
for (let [key, val] of Object.entries(animals)) {
if (key in pets) {
aPet[key] = val
} else {
notAPet[key] = val
}
}

是否有更好的"短"方法来实现上述目标,最好只创建aPet,而使animals最终等同于notAPet?

可以使用delete操作符:

let pets = {
'cat': {},
'dog': {},
}
let animals = {
'cat': 'black',
'dog': 'white',
'whale': 'blue',
'albatross': 'grey',
}
let aPet = {}
let notAPet = {}
for (let [key, val] of Object.entries(animals)) {
if (key in pets) {
aPet[key] = val
delete animals[key]
}
}
console.log(aPet, animals)

最新更新