javascript - 在javascript中,需要执行动态数组的求和

标签 javascript angular

我有一个动态数组,我需要对其进行求和。

 {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/

相关文章:

angular - 如何使用 angular 2+ 和 typescript 获取所选行的元素并显示它

javascript - 取消异步/等待

javascript - 如何在jquery中用slideUp打开一个div

javascript - 如何在使用 AngularJS 提交 <select> 时绑定(bind)、填充和获取选定值

angular - 没有 FormControl 实例附加到具有名称的表单控件元素

angular - 如何在 angular2(material2)中设置 snackbar 的持续时间

javascript - 将硬编码日期与当前日期进行比较

javascript - 更新 textarea 不会以表单形式提交

angular - 合并环境文件中的不同配置文件

带有 Typescript 的 Angular2 - 加载 angular2/平台/浏览器时出错