如何在不发生突变的情况下更改Object内部的Object



所以我的问题是如何在不改变用户对象的情况下更改用户对象中的petNames对象。

const user = { 
name: 'Harry', 
age: 50, 
petNames: { 
dog: 'Lisie', 
cat: 'Foxer' 
} 
};

第一级我们可以像一样改变

{...user, age: 48 }

它将返回

{ 
name: 'Harry', 
age: 48, 
petNames: { 
dog: 'Lisie', 
cat: 'Foxer' 
} 
};

但是我如何更改petNames?

例如,狗的名字改成了"雷克斯"。

并获得类似的对象

{ 
name: 'Harry', 
age: 50, 
petNames: { 
dog: 'Rex', 
cat: 'Foxer' 
} 
};

谢谢!

您也可以扩展内部属性:

const user = {
name: 'Harry',
age: 50,
petNames: {
dog: 'Lisie',
cat: 'Foxer'
}
};
const newUser = {
...user,
petNames: {
...user.petNames,
dog: 'rex'
}
};
console.log(user.petNames === newUser.petNames); // false

相关内容

最新更新