我有一个场景,如果以下 json 中的价格大于 0,我需要复制报价(不含价格):
const data = [
{
"id": "offer1",
"Identifier": {
"info": "some info for offer1",
"value": "some string for offer1"
},
"Price": {
"Total": 94.30
}
},
{
"id": "offer2",
"Identifier": {
"info": "some info for offer2",
"value": "some string for offer2"
},
"Price": {
"Total": 0.0
}
},
{
"id": "offer3",
"Identifier": {
"info": "some info for offer3",
"value": "some string for offer3"
},
"Price": {
"Total": 48.50
}
}
];
我需要获取所有价格 > 0 的报价并将它们放入具有特定格式的另一个数组中,预期结果应如下所示:
const result = [
{
"id":"offer1",
"reference":"offer1",
"Identifier":{
"info":"some info for offer1",
"value":"some string for offer1"
}
},
{
"id":"offer3",
"reference":"offer3",
"Identifier":{
"info":"some info for offer3",
"value":"some string for offer3"
}
}
]
我所做的第一步是过滤初始数据数组以排除 Total = 0 的报价。
const filteredOffers = data.filter(offer => offer.Price.Total > 0);
接下来我应该做什么才能得到预期的结果? 谢谢。
最佳答案
您可以映射新对象。
const
data = [{ id: "offer1", Identifier: { info: "some info for offer1", value: "some string for offer1" }, Price: { Total: 94.3 } }, { id: "offer2", Identifier: { info: "some info for offer2", value: "some string for offer2" }, Price: { Total: 0 } }, { id: "offer3", Identifier: { info: "some info for offer3", value: "some string for offer3" }, Price: { Total: 48.5 } }],
result = data
.filter(({ Price: { Total } }) => Total > 0)
.map(({ Price, ...o }) => ({ ...o, reference: o.id }));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 复制具有特定值的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71414825/