javascript - 按数组中相同的值合并对象
问题描述
我需要合并价格相同的对象并添加数量(amount
)。
例子:
[
{price: 25.1, amount: 32},
{price: 45.2, amount: 45},
{price: 25.1, amount: 25},
{price: 44.0, amount: 13},
{price: 45.2, amount: 23}
]
结果:
[
{price: 25.1, amount: 57}, // 32 + 25
{price: 45.2, amount: 68}, // 45 + 23
{price: 44.0, amount: 13},
]
解决方案
您可以使用Array#reduce
对象来存储每个价格的金额。
const example = [
{price: 25.1, amount: 32},
{price: 45.2, amount: 45},
{price: 25.1, amount: 25},
{price: 44.0, amount: 13},
{price: 45.2, amount: 23}
]
const res = Object.values(example.reduce((acc,{price,amount})=>
((acc[price] = acc[price] || {price, amount: 0}).amount += amount, acc), {}));
console.log(res);
推荐阅读
- c# - recaptcha 上的错误禁止 403
- c# - 在对话框的构造函数中调用 .Show() 或 .ShowDialog 是一种好习惯吗
- liferay - Liferay Service Pack 和 Fixpack
- mysql - 错误 1054 (42S22):“字段列表”中的未知列“i”
- scala - 如何在 scala 中使用 google pubsub 库
- apache-spark - 在火花流中随机获取 LeaseExpiredException
- git - 源树 1 个前面的分支和 1 个后面的分支
- python - 处理各种货币字符串 pandas
- excel - 如何将 excel vba 中的多行 powershell 脚本作为单行运行?
- python-3.x - 没有在底图上绘制 networkx 的虚线