[英]How to change a property on an object without mutating it?
const a = {x: "Hi", y: "Test"}
const b = ???
// b = {x: "Bye", y: "Test"}
// a = {x: "Hi", y: "Test"}
如何在不改变 a 的情况下将bx
设置为"Bye"
?
两种方式...
您可以使用Object.assign
:
const a = { x: "Hi", y: "Test" } const b = Object.assign({}, a, { x: "Bye" }); console.log(b);
或者您可以使用对象扩展运算符。
展开运算符允许您将一个对象的所有属性“分配”给另一个对象。
我们可以在这里使用一个对象常量内的所有属性分配a
给b
:
const additions = { x: "Bye" } const a = { x: "Hi", y: "Test" } const b = { ...a, ...additions } console.log(b);
有一种简单的方法可以在不改变原始对象的情况下更改对象属性。
const a = {x: "Hi", y: "Test"}; const b = {...a, y: "hello"};
Es6 有一个用于复制对象属性的内置函数, Object.assign
const b = Object.assign({}, a, {x: 'Bye'})
在这里我们创建一个空对象,将所有a
s 键值对推入,然后是我们要覆盖的新键值对。 因为空对象是第一个参数,所以我们改变了那个对象,而不是a
试试这个: const b = a.map(item => Object.assign({}, ...item));
这将创建一个不引用旧对象a
新对象
如果您想对数组执行此操作,请尝试使用[]
const b = a.map(item => Object.assign([], ...item));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.