javascript - 根据属性组合数组中的重复项
问题描述
我想创建另一个数组,其中添加了重复的活动值
let arrayName = [
{ campaign: "a", value: 3 },
{ campaign: "b", value: 5 },
{ campaign: "c", value: 7 },
{ campaign: "a", value: 9 },
];
预期输出:
[
{ campaign: 'a', value: 12 },
{ campaign: 'b', value: 5 },
{ campaign: 'c', value: 7 }
]
解决方案
您可以减少对象中的项目,然后将条目映射回对象。
const arrayName = [
{ campaign: "a", value: 3 },
{ campaign: "b", value: 5 },
{ campaign: "c", value: 7 },
{ campaign: "a", value: 9 },
];
const result = Object
.entries(arrayName.reduce((acc, { campaign, value }) =>
({ ...acc, [campaign]: (acc[campaign] || 0) + value }), {}))
.map(([campaign, value]) => ({ campaign, value }));
console.log(result);
.as-console-wrapper { top: 0; max-height: 100% !important; }
推荐阅读
- python - 如何用json序列化对象
- excel - 复制工作表时出现对象类型错误
- angular - 从下拉菜单中选择自定义选项后如何启用输入文本框?
- informix - 如何确定在创建 informix 表时将哪些值作为扩展区大小和下一个大小?
- bash - 如何将多个参数传递给 screen 命令中调用的脚本?
- java - 将 Maven 构建类型从 jar 转换为 war
- javascript - 从 firebase 获取正确路径时出错
- microsoft-graph-api - 想要在 Word 插件中为文档获取一个驱动器 ID
- javascript - 隐藏 Zendesk 聊天按钮会打开聊天窗口。有什么修复吗?
- vue.js - 使用 Vue 1.0.28 的引导选项卡在使用 Vue 1.0.18 时无法正常工作