我有一个动态数组,我需要对其进行求和。
{ClientName: "A", Alex: 2, Da: 0, Cal: 0}
{ClientName: "b", Alex: 0, Da: 0, Cal: 4}
{ClientName: "c", Alex: 1, Da: 0, Cal: 5}
{ClientName: "d", Alex: 2, Da: 0, Cal: 0}
在此数组中,客户名称是固定的,但其他列(例如 Alex、Da、Cal)是动态的并且会有所不同。我需要在 typescript 中创建一个通用函数,其输出如下所示。
{ClientName: "Total", Alex: 5, Da: 0, Cal: 9}
最佳答案
你可以尝试这样的事情:
想法:
- 使用
Object.keys
获取所有可枚举键。 - 循环遍历它们,如果没有找到,则将它们设置为默认值。然后添加当前对象的值。
- 由于您需要
ClientName
的硬编码值,因此您可以在循环中设置它,也可以在循环后设置它。
const data = [
{ClientName: "A", Alex: 2, Da: 0, Cal: 0},
{ClientName: "b", Alex: 0, Da: 0, Cal: 4},
{ClientName: "c", Alex: 1, Da: 0, Cal: 5},
{ClientName: "d", Alex: 2, Da: 0, Cal: 0},
]
const output = data.reduce((acc, item) => {
Object
.keys(item)
.forEach((key) => {
acc[key] = (acc[key] || 0) + item[key]
});
acc.ClientName = 'Total'
return acc;
}, {})
console.log(output)
关于javascript - 在javascript中,需要执行动态数组的求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54039316/