javascript - 改变一个对象键的值同时改变另一个
问题描述
我有一个复杂的变量作为一个对象,包括 2 次相同的对象。如果我更改第一个对象部分的值,这将假定更改第二部分的值。有解释吗?为什么拖车键还连接着?!这是我的代码的一个简单示例:
arr1={'a':[],'b':{'b1':'','b2':''}};
arr2={'p1':{...arr1},'p2':{...arr1}};
arr2['p1']['a']=[1,2,3];
console.log(arr2['p2']['a']); // works => []
arr2['p1']['b']['b1']='blabla';
console.log(arr2['p2']['b']['b1']); // doesn't work => 'blabla'
我不想写 'B={'b1':{'a':''},'b2':{'a':''}}' 因为 A 在单独的 .js 中是一个非常大的对象文件
解决方案
我解决了这个问题:
arr2={'p1':JSON.parse(JSON.stringify(arr1)),'p2':JSON.parse(JSON.stringify(arr1))};