为了账号安全,请及时绑定邮箱和手机立即绑定

对象数组赋值给另一个数组,在操作新数组,怎么使原数组不变

对象数组赋值给另一个数组,在操作新数组,怎么使原数组不变

慕婉清6462132 2018-09-23 22:29:17
var c = self.threeData1;                                        var threeData2 = c.concat();                                                                                   threeData2.forEach(function(iten){                                             iten.price = "---"                                          })                                       console.log("c",c)                                       console.log("threeData2",threeData2)
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

  1. 原数组treeData1中的元素都是object,也就是引用类型。

  2. concat方法是合并两个数组,类似将object1赋值给object2,此时对object1的属性a进行修改,此时object2a属性与object1的a属性值相同。

所以修改了第一个数组中某个元素的属性,新数组中对应元素属性也被修改。

总结起来就是值类型数据和引用类型数据的拷贝/克隆问题。
引用类型数据赋值时,是赋值此对象的指针,而并不是存储在堆中的对象。


查看完整回答
反对 回复 2018-09-23
  • 1 回答
  • 0 关注
  • 2655 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信