arrays - 我在使用数组 1 中的对象 X 和数组 2 中的对象 Y 减去数量时遇到问题
问题描述
我使用的函数可以,但是当我尝试做减法时,两个数组都被减去了
变量:
let data1 = [
{ ProductTotalId: 30, ProductId: 30, Quantity: 50 },
{ ProductTotalId: 31, ProductId: 29, Quantity: 20 },
{ ProductTotalId: 32, ProductId: 28, Quantity: 30 },
{ ProductTotalId: 33, ProductId: 27, Quantity: 30 },
];
let Remove = [
{ ProductTotalId: 30, ProductId: 30, Quantity: 2 },
{ ProductTotalId: 30, ProductId: 30, Quantity: 10 },
{ ProductTotalId: 31, ProductId: 29, Quantity: 3 },
{ ProductTotalId: 32, ProductId: 28, Quantity: 12 },
{ ProductTotalId: 32, ProductId: 28, Quantity: 2 },
{ ProductTotalId: 33, ProductId: 27, Quantity: 11 },
{ ProductTotalId: 33, ProductId: 27, Quantity: 5 },
]
let data2
功能:
data2 = data1;
for (let value of data2) {
for (let data of Remove) {
if (value.ProductId === data.ProductId) {
value.Quantity = value.Quantity - data.Quantity;
}
}
}
console.log(data1);
console.log(data2);
错误是data1 = data2,减去数量,我需要的是data2被减去并且数据1不应该受到任何变化。
Stackblitz 中的链接: https ://stackblitz.com/edit/typescript-u8mzii
谢谢你的时间。
解决方案
data2 = data1
只是为对象创建另一个引用。您没有在data1
此处复制对象。因此,如果您对引用进行更改,data2
它将影响所引用的对象data1
(此处为同一对象)。
创建对象的副本使用以下
data2 = JSON.parse(JSON.stringify(data1));
推荐阅读
- c - calloc() 总共可以分配超过 SIZE_MAX 吗?
- raspberry-pi - 如何使用 OMNET++ 进行硬件循环实验
- html - 为什么我们不能在角度 6 中的相同输入标签中使用 [(ngModel)] 和值
- sql - 如何强制访问查询使用二分搜索
- android - 应用小部件从哪些典型来源获取数据?
- angular - 在本地运行我的 angular6 应用程序时出现错误
- html - Ionic 3 - 单击按钮时动态添加行
- python - Keras TimeDistributed,具有不同形状的多个输入
- qt - 在 qwidget Qt 中播放视频 URL
- c# - 如何在 dotnet core 2.1 中使用具有 256 个长块大小的 Rijndael 算法