javascript - 计算对象数组中的重复项
问题描述
我有一个数组。如何按类型、名称和大小以及增量查找重复项。并在增加数量后删除相同的数量。
[
{
"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);
推荐阅读
- python - 检查下一行是否有比当前行更多的前导空格
- python - 对数组进行切片以排除单个元素
- angular - elasticsearch-browser 的打字稿类型定义
- ios - 如何在内部将模型数据发送到单元格?
- javascript - 为什么我的 Math.random 函数总是返回相同的值?
- git - 解决方案具有位于解决方案文件夹之外的项目
- swift - 错误:/path/to/library 没有清单,即使它确实存在 - Swift 包管理器
- javascript - 创建嵌套 ES6 类的高效优雅方式?
- sql-server - SQL Server:返回现有库存单位的最新成本修订的子查询
- asp.net - 如何检查 URL 是否在我的 ASP.NET 应用程序中?