javascript - 从 javascript 中现有的对象克隆一个新对象

标签 javascript rest object ecmascript-6 destructuring

我有一个像这样的多步骤 JavaScript 对象:

const source = {
  prev: [],
  current: {
    list: [{ a: 1, b: 2, c: 3 }],
    data: [{ c: 1, b: 2 }]
  },
  id: 12,
  next: []
};

我想创建它的新副本。 我知道如果我使用像 let copy = { ...source }; 这样的东西,它就像一个浅拷贝。因此,如果我更改 source 中的这些数组或对象,它们也会在 copy 中更改。

无论如何,通过解构,我可以获得所有项目的新副本吗?或者我应该像这样手动为每个深度级别执行此操作:

copy.prev = [...source.prev]
copy.current.list = [...source.current.list]
copy.current.data= [...source.current.data]

等等

最佳答案

有一种旧方法可以做到这一点,但仍然有效:

var cloned = JSON.parse(JSON.stringify(original));

关于javascript - 从 javascript 中现有的对象克隆一个新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53345210/

相关文章:

javascript - 按字母顺序组织 JSON 数据

javascript - 通过 JSON 文件创建大型客户端 Javascript 对象数组的替代方案?

rest - PowerShell REST内部主体

.net - Unity框架如何解析静态类?

c++ - 无法删除和删除 vector 上的对象指针

javascript - 如何将标签和 slider 放在同一行

rest - RESTful API路由设计:嵌套与非嵌套

jquery - 一张 Datatables.net 表,包含来自 Sharepoint 2010 REST API 的多个 ajax 调用

c++ - 在类中的函数外部归档 vector

javascript - Form To Wizard 和 Zurb Foundation 遵守验证