当后台传输一个数组中有json数据时,你想重新赋值给其他变量后修改新的变量时,你会发现你修改新的变量时,原始的数组也会发生变化,怎么解决呢?
示例
var arr = [{"a":11111},{"b":11111},{"c":11111},{"d":11111},{"e":11111},{"f":11111},{"g":11111}];
var arr1 = [];
for(var i=0;i<arr.length;i++){
arr1.push(arr[i])
}
arr1[0]['a']=22222; //这里是修改新变量的数据
console.log(arr,arr1); //当我们输出时你会发现是这样的数据
生成结果
![](https://img.haomeiwen.com/i6072943/8ee69b0ae076117f.png)
解决办法1
var arr= [{"a":11111},{"b":11111},{"c":11111},{"d":11111},{"e":11111},{"f":11111},{"g":11111}];
var arr1 = [];
for(var i=0;i<arr.length;i++){
arr1.push(Object.assign({},arr[i]))
}
arr1[0]['a']=22222;
console.log(arr,arr1);
解决方法2
var arr= [{"a":11111},{"b":11111},{"c":11111},{"d":11111},{"e":11111},{"f":11111},{"g":11111}];
var arr1=JSON.parse(JSON.stringify(arr));
arr1[0]['a']=22222;
console.log(arr,arr1);
![](https://img.haomeiwen.com/i6072943/acfc99f833c7172d.png)
网友评论