javascript - 如何在不重复的情况下改变对象?

标签 javascript object

我有这个对象

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/

相关文章:

javascript - 格式化从 JSON 文件接收数据的 React 表

javascript - Odoo:使用支付收单方添加 Stripe

java - 从 Java 中的 Map 中删除 Class 对象键

Java 多态性 : Accessing methods in super and subclasses

javascript - 在 magento 中使用 "PIN/ZIP"检查器检查交付是否可用

javascript - bootstrap data-toggle ="tab"- 如何通过 JS 调用激活选项卡

javascript - 防止对象函数内的事件覆盖 "this"

java - 将一组对象从一个类发送到另一个类

c++ - 在 C++ 中直接释放对象

javascript - 使 Ajax 请求递归 - 检查文件是否存在