【问题标题】:How can I create a new Object from a JSON value without changing the parent in JS?如何在不更改 JS 父对象的情况下从 JSON 值创建新对象?
【发布时间】:2022-11-30 23:58:34
【问题描述】:

我一直在使用 JS + JSON,但我找不到从某个父对象的值创建新对象的方法。例如:

const parent = {
  "child": {"value": 12},
  "otherChild": {"value": 83}
}

// I want to create a duplicate without editing the original
const newChild = parent.child;
newChild.value = 25;

// Logs 25
console.log(parent.child.value);

我试过使用new Object();,但还是不行。 :/

【问题讨论】:

标签: javascript node.js json object


【解决方案1】:

最简单的方法是:

const parent = {
    "child": {"value": 12},
    "otherChild": {"value": 83}
}

// I want to create a duplicate without editing the original
const newChild = JSON.parse(JSON.stringify(parent.child));
newChild.value = 25;

如果您不需要任何旧浏览器节点版本支持,您也可以轻松使用:

const newChild = structuredClone(parent)

两者都适用于子对象。

【讨论】:

    【解决方案2】:

    您可以尝试使用名为cloneDeeplodash 方法

    const _ = require('lodash');
       
    var obj = {
        x: 23
    };
       
    // Deep copy
    var deepCopy = _.cloneDeep(obj);
       
    console.log('Comparing original with'
        + ' deep ', obj === deepCopy);
       
    obj.x = 10; // Changing original value
       
    console.log('After changing original value');
       
    console.log("Original value ", obj);
       
    console.log("Deep Copy value ", deepCopy);
    

    然而也有本地解决方案,看看这个answer

    【讨论】:

      猜你喜欢
      • 2014-06-09
      • 2021-08-06
      • 2012-04-14
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      • 2021-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多