JavaScript How to delete key from copied object?
本问题已经有最佳答案,请猛点这里访问。
我有查询对象
1 2 3 4 | var q = { age: 10, 'profile.contry': 'india' }; |
现在我复制了
1 2 3 4 5 | var duplicateQ = q; delete duplicateQ['profile.contry']; // I have removed 'profile.country' from duplicateQ. console.log(q); //Object { age: 10 } console.log(duplicateQ); //Object { age: 10 } |
为什么这两个变量都会受到影响?如何仅从其中一个移除属性?
您没有复制
为了使这项工作正常进行,您必须克隆该对象,然后您可以在单独的变量上删除(/modify)单个属性。
一个快速而肮脏的例子:
1 2 3 4 5 6 | var a = { a: 1, b: 2 }, b = JSON.parse(JSON.stringify(a)); delete b.a; document.body.textContent = JSON.stringify(a) + ' ' + JSON.stringify(b); |
这是因为
您需要复制/克隆对象。
在ES6中,可以使用
1 2 3 | var q = {age:10, 'profile.contry': 'india'}; var duplicateQ = Object.assign({}, q); delete duplicateQ['profile.contry']; |
输出:
1 2 3 4 5 | console.log(q); // {age: 10, profile.contry:"india"} console.log(duplicateQ); // Object {age: 10} |