Javascript 将值指定给对象时,会自动更新存储在数组中的现有对象

Javascript 将值指定给对象时,会自动更新存储在数组中的现有对象,javascript,angular,Javascript,Angular,我需要一些帮助。我有一个简单的Angular应用程序,它采用一些表单输入值。这些值被传递到一个简单的方法,在该方法中,这些值被指定给对象的匹配属性值。最后,将此对象推入数组中 我的问题是,;每次传入方法的值被指定给my对象的属性值时,已经在my数组属性中的所有其他对象的属性也会被更新 我做错了什么我相信有一天这会是我会怀念的那些编码错误之一 我的代码: 这是将值指定给的对象: 这是我的方法: 提前谢谢你 Angular和TypeScript与此无关。它是简单的JavaScript:

我需要一些帮助。我有一个简单的Angular应用程序,它采用一些表单输入值。这些值被传递到一个简单的方法,在该方法中,这些值被指定给对象的匹配属性值。最后,将此对象推入数组中

我的问题是,;每次传入方法的值被指定给my对象的属性值时,已经在my数组属性中的所有其他对象的属性也会被更新

我做错了什么我相信有一天这会是我会怀念的那些编码错误之一

我的代码: 这是将值指定给的对象:

这是我的方法:


提前谢谢你

Angular和TypeScript与此无关。它是简单的JavaScript:

      this.simsInCart.push(this.UOPSim);
如果组件保留一个UOPSim,则数组中没有n个对象,而是有n个对同一对象的引用

您可以通过以下方式进行克隆:

      this.simsInCart.push({ ...this.UOPSim });

如果有人遇到这个问题,我就是这样解决问题的:

根据发布的@mbojko回复,我只是引用了同一个对象newb move

我通过简单地使用兴奋剂解决了这个问题:

如果需要浅拷贝,请使用Object.assign{},一个

对于深度复制,请使用JSON.parseJSON.stringifya

*感谢@Tareq对此处帖子的回复:

因此,在我的例子中,我更改了this.simsinvest.pushthis.UOPSim;致:


您使用的是一个数组中的一个变量,一次又一次地推送同一个对象。this.simsensit只是一个数组,包含对同一对象this.UOPSim的多个引用。
      this.simsInCart.push(this.UOPSim);
      this.simsInCart.push({ ...this.UOPSim });
const newSim = JSON.parse(JSON.stringify(this.UOPSim));
this.simsInCart.push(newSim);