You need to enable JavaScript to run this app. 如何将数组name值作为新数组键名、按日期聚合count得到目标结构数组
优惠活动
大模型
产品
解决方案
定价
更多

如何将数组name值作为新数组键名、按日期聚合count得到目标结构数组

数组按日期分组聚合转换实现

实现思路

  • 以日期为键创建临时映射对象,存储每个日期的聚合数据
  • 遍历原数组完成每个日期下的人员count写入和总count累加
  • 提取临时映射对象的值得到最终结果数组

代码实现

const originalArr = [
  {date:'27-06-2021',name:'John Doe',count:2},
  {date:'29-06-2021',name:'John Doe',count:1},
  {date:'29-06-2021',name:'George Newman',count:1},
];

const dateGroup = {};

originalArr.forEach(record => {
  const currDate = record.date;
  // 初始化日期分组
  if (!dateGroup[currDate]) {
    dateGroup[currDate] = { date: currDate, sumCount: 0 };
  }
  // 写入对应人员的count值,若同一日期同一人员有多条记录可改为累加模式
  dateGroup[currDate][record.name] = record.count;
  // 累加当日总count
  dateGroup[currDate].sumCount += record.count;
});

// 转为目标数组结构
const result = Object.values(dateGroup);

输出结果

执行上述代码后result的值和要求的结构完全一致:

[
  {date:'27-06-2021','John Doe':2,sumCount:2},
  {date:'29-06-2021','John Doe':1,'George Newman':1,sumCount:2}
]

如果同一日期下存在同一人员的多条记录,只需要将赋值语句dateGroup[currDate][record.name] = record.count修改为dateGroup[currDate][record.name] = (dateGroup[currDate][record.name] || 0) + record.count即可实现人员count累加

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 13:06:04