Javascript 如何使用array.push()函数复制数组而不复制键值?

Javascript 如何使用array.push()函数复制数组而不复制键值?,javascript,arrays,typescript,cart,Javascript,Arrays,Typescript,Cart,我正在开发一个食品车功能,在其中我将产品添加到食品车中。我的购物车是一种数组类型,产品是一个具有键值的对象。我面临的问题是,每当我尝试为相似的密钥添加具有不同值的新产品时,它也会覆盖旧产品相同密钥的值。根据我的理解,数组只是指向我的产品对象的引用,但我想知道,解决这个问题的最佳方法是什么?下面是我的代码结构的样子: 组件技术 this.cartService.add(product); // <- This Product contains key modifier: ["abc

我正在开发一个食品车功能,在其中我将产品添加到食品车中。我的购物车是一种数组类型,产品是一个具有键值的对象。我面临的问题是,每当我尝试为相似的密钥添加具有不同值的新产品时,它也会覆盖旧产品相同密钥的值。根据我的理解,数组只是指向我的产品对象的引用,但我想知道,解决这个问题的最佳方法是什么?下面是我的代码结构的样子:

组件技术

this.cartService.add(product); // <- This Product contains key modifier: ["abc","def"]
因此,每次我使用不同的修改键(例如->修改器:[“dfg”,“gght”])将产品推送到购物车时,它都会用所有修改键的新值覆盖现有的this.cart数组对象

下面是我的this.cart数组中的两个产品的日志记录方式:

(2) [{…}, {…}]
0:
category: "-M9JfAlqr_JiAiPTugc5"
description: "zxfsfsafas afa fsaff fsf safsa sfaf safs afsafa fas asf safs af aasf asfa asf ."
isAvail: true
key: "-MMWt2wDMVaHqj45eKFg"
modifiers: ["-MLxJCw0s0uDYSXYokz1"]
name: "Single Modifier"
price: 23
qty: 1
selectedModifiers: ["Corn"]  // <- This is initially empty when I added this product but after adding second product this also took the value of second.
total: 23
__proto__: Object

1:
category: "-M9JfAlqr_JiAiPTugc5"
description: "zxfsfsafas afa fsaff fsf safsa sfaf safs afsafa fas asf safs af aasf asfa asf ."
isAvail: true
key: "-MMWt2wDMVaHqj45eKFg"
modifiers: ["-MLxJCw0s0uDYSXYokz1"]
name: "Single Modifier"
price: 23
qty: 1
selectedModifiers: ["Corn"] // <- This is correct but after adding this product, this selectedModifiers value also gets added to first product. See above.
total: 23
__proto__: Object
length: 2
__proto__: Array(0)
(2)[{…},{…}]
0:
类别:“-M9JfAlqr_JiAiPTugc5”
描述:“zxfsfsafas afa fsaff fsf safsa sfaf safs afsafa fas asf safs af aasf asf asf。”
伊莎维尔:是的
键:“-MMWt2wDMVaHqj45eKFg”
修饰符:[“-MLxJCw0s0uDYSXYokz1”]
名称:“单个修饰符”
价格:23
数量:1

所选修改器:[“Corn”]/在修改产品对象之前克隆它

   add(product) {
       const clone = {...product} 
       clone.qty = 1;
       clone.total = clone.price;
       this.cart.push(clone);
    }

这不是答案。如果您希望得到澄清,请使用注释。我的cartService中唯一的其他代码是将cart数组初始化为“cart=[];”,它说我需要至少50分才能在问题上添加注释将新项目推到数组中不会覆盖现有项目。按下将在下一个可用索引处添加元素。但是,如果你需要重写数据,你可以考虑再次查看对象或MpSokes问题。我添加了如何记录我的this.cart的日志。注意“selectedModifiers”键。我已经在旁边发表了评论。请添加可复制的示例您是否尝试过
产品。selectedModifiers=[youSelectedModifier]
?@CaseyC:我尝试过,但它仍然会给我相同的覆盖结果:(这两个对象看起来完全相同。在将其推送到数组之前,您是否尝试过检查
product
的值?它们实际上是相似的,因为它们是相同的产品,但我使用不同的修改器添加它们,因此在我的购物车数组中,它们需要不同,因为产品修改器不同。例如,相同的牛排食品产品可以用不同的肉类温度来定购。所以基本上它们只是牛排,但有不同的肉类温度偏好。
   add(product) {
       const clone = {...product} 
       clone.qty = 1;
       clone.total = clone.price;
       this.cart.push(clone);
    }