计数对象数组中的复制副本



我有一个数组。如何按类型、名称、大小和增量查找复制副本。并在增加数量后删除相同的。

[
{
"name": "Pizza with pepper",
"imageUrl": "...",
"type": 0,
"size": 26,
"price": "803",
"amount": 1
},
{
"name": "Pizza with pepper",
"imageUrl": "...",
"type": 1,
"size": 40,
"price": "803",
"amount": 1
},
{
"name": "Peperoni",
"imageUrl": "...",
"type": 0,
"size": 30,
"price": "803",
"amount": 1
},
{
"name": "Peperoni",
"imageUrl": "...",
"type": 0,
"size": 30,
"price": "803",
"amount": 1
}
]

const data = [
{
"name": "Pizza with pepper",
"imageUrl": "...",
"type": 0,
"size": 26,
"price": "803",
"amount": 1
},
{
"name": "Pizza with pepper",
"imageUrl": "...",
"type": 1,
"size": 40,
"price": "803",
"amount": 1
},
{
"name": "Peperoni",
"imageUrl": "...",
"type": 0,
"size": 30,
"price": "803",
"amount": 1
},
{
"name": "Peperoni",
"imageUrl": "...",
"type": 0,
"size": 30,
"price": "803",
"amount": 1
}
];
const merged = data.reduce((agg, item) => {
const key = `${item.name}-${item.type}-${item.size}`;
if (agg[key]) {
agg[key].amount += item.amount;
} else {
agg[key] = item;
}
return agg;
}, {});
const result = Object.values(merged);
console.log(result);

最新更新