如何将多个对象合并为一个并处理打字稿中的重复键

Joe*_*edo 2 algorithm typescript angular

我正在使用ng2-charts,我需要填充一个水平条形图.我在keys.forEach中获取我的值,并且我的图表数据生成的console.log是(示例):

{ReasonA: 5}
{ReasonA: 5, ReasonB: 5}
{ReasonA: 1, ReasonB: 3, ReasonC: 2}
{ReasonA: 1, ReasonB: 4, ReasonE: 2}
Run Code Online (Sandbox Code Playgroud)

我需要将对象组合成一个,并处理同一个键的多个值.此示例的所需结果将是此对象:

{ReasonA: 12, ReasonB: 12, ReasonC: 2, ReasonE: 2}
Run Code Online (Sandbox Code Playgroud)

使用该对象,然后我可以拆分键和值并填充de chart.你能指导我如何将4个对象合并到所需的结果中吗?

提前致谢.

Ted*_*rne 5

如果所有属性都是数字,则使用数组的逻辑非常简单reduce.如果属性具有不同的类型,那么逻辑将稍微复杂一些.以下是您可以编写的函数示例:

function sumProperties(...objects: { [key: string]: number }[]) {
  return objects.reduce((acc, obj) => {
    for (let key in obj) {
      let a = acc[key] || 0;
      let b = obj[key];
      acc[key] = a + b;
    }

    return acc;
  }, {});
}
Run Code Online (Sandbox Code Playgroud)

示例使用:

sumProperties(
  {ReasonA: 5},
  {ReasonA: 5, ReasonB: 5},
  {ReasonA: 1, ReasonB: 3, ReasonC: 2},
  {ReasonA: 1, ReasonB: 4, ReasonE: 2},
)
Run Code Online (Sandbox Code Playgroud)