首页 > 解决方案 > 根据属性组合数组中的重复项

问题描述

我想创建另一个数组,其中添加了重复的活动值

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 }
]

标签: javascriptarrays

解决方案


您可以减少对象中的项目,然后将条目映射回对象。

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; }


推荐阅读