关于变量值叠加的问题

let a = []
let b = {na:b, nu:2}
let c = 2 // 固定变量c

// 当a为空时添加b
// 假如有多条数据注入到a后
let a = [{na:b, nu:2}, {na:bb, nu:22}, {na:bbb, nu:222}]
// 再次注入b,使原a中的b数据({na:b, nu:2})nu变量叠加,原本的c变量也同时叠加

我的代码如下

if (a.length < 1) {
  a.push(b)
}
a.forEach((item, index) => {
  if (item.na == b.na) {
    item.nu += b.nu
  }
})

image.png

请问为何会叠加a中的元素值,会影响到固定变量c呢?

阅读 1.3k
1 个回答

你的问题在于,你实际上
user.commoditys.push(this.goods)
这句代码是把this.goods的这个对象的引用push进去了
就是说user.commoditys数组里面的是this.goods的这个数组的引用
你可以把这句话改为这样
user.commoditys.push(Object.assign({},this.goods));
这样就没问题了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题