把对象添加进数组后,改变一个对象的值,数组内对象也跟变化的解决办法!

本文探讨了在JavaScript中使用深拷贝技术解决数组元素值因引用类型特性而产生的同步变更问题。通过将对象转换为字符串再转回对象的方式,确保了每次push操作都是独立的对象,避免了值的联动变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

把用户每次输入的值(businessBuyer)都存入一个空的数组(BusinessBuyer)内,累加,但发现每次用户输入后,数组内每一个对象的元素值全都跟改变了,所以数组内的所有对象的元素全都变成了用户最后一次输入的值。

this.BusinessBuyer.push(this.businessBuyer)

解决方法(深拷贝):

看到一些博主给出的思路,因为数组是引用传递而不是值传递,指向的是同一个内存地址 ,所以赋值给数组里的对象其实一直都是同一个地址里存的同一个数组 , 所以 ,最后一次输入值后 ,每个引用的值都一起改掉了,如果我们不想让数组的值跟着联动变化,应该怎么解决呢?重点来了!!!可以先把businessBuyer转换成字符串,然后在转换成对象这样就会新分配一块内存新创建一个对象。就解决啦!是不是意想不到,反正我是,哈哈哈哈

this.BusinessBuyer.push(JSON.parse(JSON.stringify(this.businessBuyer)))

疑惑了好久,菜鸟爬坑也是不容易啊!!!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值