【问题标题】:Assigning javascript object to new object as copy将 javascript 对象作为副本分配给新对象
【发布时间】:2017-03-19 07:13:07
【问题描述】:

我在 javascript 中有这个对象数组 obj.arr。 我将它分配给了一个新对象。

var obj_arr_new = obj.arr;

问题是当我修改obj_arr_new 时,obj.arr 也会被修改。我不要那个。如何使obj_arr_new 成为obj.arr 的副本,并且当我修改obj_arr_new 时,obj.arr 保持不变?

我正在使用 node.js v6。我愿意使用任何 node.js 模块。有人告诉我 lodash 可以完成这项工作。使用 lodash 的答案会很有帮助。

【问题讨论】:

  • 你做过研究吗?已经有很多关于这个的问题,lodash 文档是在线的。
  • 我做到了,但 lodash 中有一些方法似乎符合要求,但我不知道具体是哪一种。抱歉,我比较慢。

标签: node.js object clone lodash javascript-objects


【解决方案1】:

为此,Lodash 确实有一个 _.cloneDeep(value)

var obj_arr_new = _.cloneDeep(obj.arr);

它将递归地克隆“数组、数组缓冲区、布尔值、日期对象、映射、数字、对象对象、正则表达式、集合、字符串、符号和类型化数组”,以便修改克隆的位不会影响原始,反之亦然。

Documentation

【讨论】:

    【解决方案2】:

    我倾向于使用以下方法创建副本:

    var copiedObject = JSON.parse(JSON.stringify(originalObject));
    

    这仅适用于 JSONable 对象,但如果您正在处理字符串、数组等,则很好,即如果您将函数作为要复制的对象的子对象,则不适用。

    【讨论】:

      猜你喜欢
      • 2019-12-06
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-24
      • 2016-07-03
      • 1970-01-01
      相关资源
      最近更新 更多