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

使用JS/Node Reduce按多属性分组汇总JSON数据并关联原对象

解决方案

实现思路

  • 第一步:先遍历所有日程,按LocalDate分组统计四个指定属性的分布数据,生成「日期-对应统计结果」的映射表
  • 第二步:遍历原始日程数组,给每个日程对象追加对应日期的统计结果作为Summary字段即可

完整代码

// 原始数据
const rawData = {
  "Schedule": [
    // 填入你的原始日程数据
  ]
};
// 指定需要统计的属性
const statsProps = ['InsuranceName', 'InsuranceFinancialClass', 'AppointmentName', 'LocalDate'];

// 第一步:生成按日期分组的统计映射表
const dateStatsMap = rawData.Schedule.reduce((map, item) => {
  const dateKey = item.LocalDate;
  // 首次遇到该日期则初始化统计结构
  if (!map[dateKey]) {
    map[dateKey] = statsProps.reduce((initObj, prop) => {
      initObj[prop] = { Total: 0 };
      return initObj;
    }, {});
  }
  const dateStats = map[dateKey];
  // 对指定属性逐个累加统计
  statsProps.forEach(prop => {
    const propValue = item[prop];
    dateStats[prop].Total += 1;
    dateStats[prop][propValue] = (dateStats[prop][propValue] || 0) + 1;
  });
  return map;
}, {});

// 第二步:给每个原始日程追加Summary字段,得到最终结果
const finalResult = {
  Schedule: rawData.Schedule.map(item => ({
    ...item, // 保留原有所有字段
    Summary: dateStatsMap[item.LocalDate] // 追加对应日期的统计结果
  }))
};

说明

你给出的预期输出中,11/02/2021对应的Summary.AppointmentName里出现了InPerson: 1属于笔误,该日期下没有对应类型的预约,正常统计结果不会包含该字段。

内容的提问来源于stack exchange,提问作者Andy P.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:39:03