JavaScript如何从复制的对象中删除键?

这个问题在这里已经有了答案:

  • 我如何正确克隆一个JavaScript对象? 54个答案

  • 你不是复制q ,而是复制对不同变量的引用。

    qduplicateQ指向同一个对象,即计算机内存中的相同位置。

    为了使这个工作,你将不得不克隆该对象,然后你可以删除(/修改)单独变量的各个属性。

    一个快速而肮脏的例子:

    var a = { a: 1, b: 2 },
        b = JSON.parse(JSON.stringify(a));
    
    delete b.a;
    
    document.body.textContent = JSON.stringify(a) + ' ' + JSON.stringify(b);

    这是因为qduplicateQ指的是同一个对象。 因此,当你在一个对象上删除一个属性时,它会影响到这两个属性(因为它们都指向同一个对象)。

    您需要复制/克隆该对象。

    在ES6中,您可以使用.assign()方法:

    var q = {age:10, 'profile.contry': 'india'};
    var duplicateQ = Object.assign({}, q);
    delete duplicateQ['profile.contry'];
    

    输出:

    console.log(q);
    // {age: 10, profile.contry: "india"}
    
    console.log(duplicateQ);
    // Object {age: 10}
    
    链接地址: http://www.djcxy.com/p/24767.html

    上一篇: JavaScript How to delete key from copied object?

    下一篇: JavaScript cloning a "class" instance