如何将日度销售数据对象转换为按分支分组的月度聚合统计对象
实现方案
你可以通过哈希对象做中间分组缓存,用「分支名+年月」作为唯一分组标识完成销售额累加,最终导出数组即可,该方案不会修改原数据,所有统计对象为全新生成:
function calculateMonthlySales(data) { // 存储分组中间结果,key规则为「分支|年月」避免重复 const groupCache = {}; data.forEach(dailyItem => { // 截取年月部分,标准YYYY-MM-DD格式前7位即为YYYY-MM const month = dailyItem.date.slice(0, 7); const groupKey = `${dailyItem.branch}|${month}`; // 首次遇到该分组时初始化统计对象 if (!groupCache[groupKey]) { groupCache[groupKey] = { branch: dailyItem.branch, date: month, sales: 0 }; } // 累加当月当前分支的销售额 groupCache[groupKey].sales += dailyItem.sales; }); // 将缓存对象的值转为数组,即为目标月度统计结果 return Object.values(groupCache); } // 调用方法得到结果 const monthlyData = calculateMonthlySales(data);
如果后续日期格式有调整,仅需要修改month字段的提取逻辑即可,整体分组流程无需改动。
内容的提问来源于stack exchange,提问作者KingDark
相关产品推荐
相关产品推荐

