我正在使用ng2图表,我需要填充一个水平条形图。
我正在keys.foreach中获取我的值,并得到图表数据的console.log(示例):
{ReasonA: 5}
{ReasonA: 5, ReasonB: 5}
{ReasonA: 1, ReasonB: 3, ReasonC: 2}
{ReasonA: 1, ReasonB: 4, ReasonE: 2}
我需要将对象合并为一个,并处理同一个键的多个值。此示例的预期结果将是此对象:
{ReasonA: 12, ReasonB: 12, ReasonC: 2, ReasonE: 2}
有了这个对象,我就可以拆分键和值并填充de chart。你能指导我如何将4个对象合并到所需的结果中吗?
提前谢谢。
最佳答案
如果所有的属性都是数字,那么使用数组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;
}, {});
}
示例使用:
sumProperties(
{ReasonA: 5},
{ReasonA: 5, ReasonB: 5},
{ReasonA: 1, ReasonB: 3, ReasonC: 2},
{ReasonA: 1, ReasonB: 4, ReasonE: 2},
)