Javascript 如何使用扩展运算符更改对象的嵌套属性?
这是我的情况的清晰版本:Javascript 如何使用扩展运算符更改对象的嵌套属性?,javascript,ecmascript-6,javascript-objects,Javascript,Ecmascript 6,Javascript Objects,这是我的情况的清晰版本: const person1 = { name: "Person1 Name", hairColor: "Brown", backpack: { color: "Army-Green", content: [ "item1", "item2", "..." ] } } 我只想改变背包的颜色 我已经尝试了下面的代码,但没
const person1 = {
name: "Person1 Name",
hairColor: "Brown",
backpack: {
color: "Army-Green",
content: [
"item1",
"item2",
"..."
]
}
}
我只想改变背包的颜色
我已经尝试了下面的代码,但没有成功:
person = {...person1, backpack.color: "New backpack color"}};
person = {...person1, backpack: {...backpack, color: "New backpack color"}};
person = {...person1, backpack: {color: "New backpack color"}};
person = {...person1, backpack = {...backpack, color: "New backpack color"}};
你必须先把财产分散在下面
const person1={
姓名:“人名”,
发型颜色:“棕色”,
背包:{
颜色:“军绿”,
内容:[
“项目1”,
“项目2”,
"..."
]
}
}
const person={…person1,背包:{…person1.背包,颜色:“红色”}
console.log(person)
为什么不干脆person1.backpack.color='New color'
?@SebastianKaczmarek,因为这也会改变person1
啊,我明白了,你需要一个新对象,但属性已经改变了。然后,下面的答案展示了如何正确操作的示例。但是,请记住,“扩展”操作符只是对象的浅拷贝,这意味着嵌套对象不会被深度复制。相反,只复制对它们的引用,因此可能会出现这样的情况:您在父对象副本中更改此嵌套对象,person1
和person
都将受到此更改的影响。
const person2 = {...person1, backpack: {...person1.backpack, color: 'Red' }}