我有这个对象
var originalObj = {
shop: [
{ id: 1, list: "buy milk", complete: false},
{ id: 2, list: "buy bread", complete: false}
]
}
我想将第一项更改为complete: true
var newObj = Object.assign({}, originalObj, {
['shop']: [
{...originalObj['shop'][0]
complete: true}, ...originalObj['shop']
]
})
问题是 newObj
最终会产生三个对象,而我试图编辑的对象会被重复。
最佳答案
深层复制有时可能会出现问题。当被分配的属性是对象时,Object.assign() 复制属性引用。最好可以使用下面的方法。
var originalObj = {
shop: [
{ id: 1, list: "buy milk", complete: false},
{ id: 2, list: "buy bread", complete: false}
]
};
var newObj = JSON.parse(JSON.stringify(originalObj));
newObj.shop[0].complete = true;
关于javascript - 如何在不重复的情况下改变对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39621850/