JavaScript如何从复制的对象中删除键?
这个问题在这里已经有了答案:
你不是复制q
,而是复制对不同变量的引用。
q
和duplicateQ
指向同一个对象,即计算机内存中的相同位置。
为了使这个工作,你将不得不克隆该对象,然后你可以删除(/修改)单独变量的各个属性。
一个快速而肮脏的例子:
var a = { a: 1, b: 2 },
b = JSON.parse(JSON.stringify(a));
delete b.a;
document.body.textContent = JSON.stringify(a) + ' ' + JSON.stringify(b);
这是因为q
和duplicateQ
指的是同一个对象。 因此,当你在一个对象上删除一个属性时,它会影响到这两个属性(因为它们都指向同一个对象)。
您需要复制/克隆该对象。
在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