javascript - 从对象中删除属性,同时在 Javascript / TypeScript 中保持原始对象不变
问题描述
我在打字稿中有以下产品对象:
产品:
{
productId: 1,
productName: "ABC",
orders: [{
orderId: 1,
orderDate: "2020-01-01",
amount: 100
},
{
orderId: 2,
orderDate: "2020-01-01",
amount: 200
}],
priceHistory: [{
date: "2020-01-1",
price: 15
},
{
date: "2020-02-1",
price: 16
}],
purchaseHistory: [{
purchaseDate: "2019-01-01",
purchaseAmt: 10,
qty: 20
},
{
purchaseDate: "2019-02-01",
purchaseAmt: 10,
qty: 2
}],
parts: [{
partId: 1,
partName: "Part 1",
priceHistory: [,,,,],
orders: [,,,],
purchaseHistory: [,,,,]
},
{
partId: 2,
partName: "Part 2",
priceHistory: [,,,,],
orders: [,,,],
purchaseHistory: [,,,,]
}]
}
我需要将产品对象传递给没有priceHistory 和 purchaseHistory 的 API(来自产品和零件)。
{
productId: 1,
productName: "ABC",
orders: [{
orderId: 1,
orderDate: "2020-01-01",
amount: 100
},
{
orderId: 2,
orderDate: "2020-01-01",
amount: 200
}],
priceHistory: [],
purchaseHistory: [],
parts: [{
partId: 1,
partName: "Part 1",
priceHistory: [],
orders: [,,,],
purchaseHistory: []
},
{
partId: 2,
partName: "Part 2",
priceHistory: [],
orders: [,,,],
purchaseHistory: []
}]
}
如何在不影响原始产品对象的情况下实现这一目标?我试过了:
let newProduct = originalProduct;
newProduct.priceHistory = [];
newProduct.purchaseHistory = []
newProduct.parts.forEach((part) => {
part.priceHistory = [];
part.purchaseHistory = [];
});
但是,它也会更新原始产品对象。我相信我们可以使用扩展 ( ...
) 运算符来做到这一点,但我不确定如何复制所有属性
解决方案
推荐阅读
- python - ret = torch._C._nn.nll_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index) throws IndexError: Target 42 is out of bounds
- mysql - 如何在 TypeORM 中创建具有 TIME 类型的实体列
- javascript - 反应本机打字稿,文本输入类型上不存在属性'textalign'
- python - 将和一累加到上一条记录,直到它达到索引值到 0
- reactjs - 为什么即使状态改变了应用程序也不重新渲染?
- node.js - 如何通过 Google local home sdk 实现 CameraStream 特征
- javascript - 从单元格中的 JSON 数据创建对象
- python - AttributeError:对象'int'没有属性
- javascript - html里面的php里面的html解析问题
- angular - 如何将fromdata中的base64从离子或角度发送到nodejs服务器?