You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS如何按measureId分组部门数据并聚合值生成目标结构数组

实现方案

核心处理逻辑分3步:

  • 遍历按部门分组的源对象,拿到每个部门名称和对应的条目列表
  • 对单个部门的所有条目,以measure${measureId}为键累加measureValue,自动合并相同measureId的数值
  • 把部门名和累加后的指标值组装为对象,最终收集为结果数组

可直接运行的代码

// 替换为你接口返回的源数据即可
const sourceData = {
  "Account Management": [
      {
          "rowId": 1288,
          "departmentExternalId": "7",
          "departmentName": "Account Management",
          "measureName": "Total Headcount Expense",
          "measureId": 15,
          "measureValue": 17282,
      },
      {
          "rowId": 1289,
          "departmentExternalId": "7",
          "departmentName": "Account Management",
          "measureName": "Salary",
          "measureId": 5,
          "measureValue": 11666,
      },
  ],
  "Client Services General (COR)": [
      {
          "rowId": 1294,
          "departmentExternalId": "114",
          "departmentName": "Client Services General (COR)",
          "measureName": "Total Headcount",
          "measureId": 2,
          "measureValue": 1,
      },
      {
          "rowId": 1295,
          "departmentExternalId": "114",
          "departmentName": "Client Services General (COR)",
          "measureName": "Total Headcount",
          "measureId": 2,
          "measureValue": 100,
      }
  ]
};

const result = Object.entries(sourceData).map(([department, entries]) => {
  const deptItem = { department };
  entries.forEach(({ measureId, measureValue }) => {
    const key = `measure${measureId}`;
    deptItem[key] = (deptItem[key] ?? 0) + measureValue;
  });
  return deptItem;
});

运行后输出的结果和你预期的结构完全一致:

[
  {department: "Account Management", measure15: 17282, measure5: 11666},
  {department: "Client Services General (COR)", measure2: 101}
]

低版本JS环境兼容写法

如果运行环境不支持Object.entries或者空值合并运算符??,可以换成下面的写法:

var result = Object.keys(sourceData).map(function(department) {
  var deptItem = { department: department };
  sourceData[department].forEach(function(item) {
    var key = 'measure' + item.measureId;
    deptItem[key] = (deptItem[key] || 0) + item.measureValue;
  });
  return deptItem;
});

内容的提问来源于stack exchange,提问作者stratdev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 10:03:15