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

如何按订单日期汇总两种鞋码订单总数并修正代码问题?

问题分析

原代码的核心问题:

  • 遍历每一条数据时,重复处理同一日期的不同尺码,最终会生成重复的日期对象
  • 内层filter同时匹配size和order_date,导致sales数组仅包含当前遍历项的尺码数据,另一个尺码的筛选结果为undefined,访问.orders时直接报错
  • 未考虑同一日期下可能存在同尺码多条数据的统计逻辑(当前数据无此场景,但逻辑上需支持)
正确实现代码
const data = [
  { color: 'red', order_date: '2022-11-01', size: '9', orders: 4 },
  { color: 'red', order_date: '2022-11-01', size: '11', orders: 8 },
  { color: 'yellow', order_date: '2022-11-04', size: '9', orders: 1 },
  { color: 'yellow', order_date: '2022-11-04', size: '11', orders: 4 },
];

// 按日期分组统计各尺码订单数
const grouped = data.reduce((acc, item) => {
  const date = item.order_date;
  // 初始化当前日期的统计结构
  if (!acc[date]) {
    acc[date] = {
      orderDate: date,
      sizeNineTotal: 0,
      sizeElevenTotal: 0
    };
  }
  // 根据尺码累加订单数
  if (item.size === '9') {
    acc[date].sizeNineTotal += item.orders;
  } else if (item.size === '11') {
    acc[date].sizeElevenTotal += item.orders;
  }
  return acc;
}, {});

// 转换为数组并计算总订单数
const combinedSales = Object.values(grouped).map(item => ({
  ...item,
  totalOrder: item.sizeNineTotal + item.sizeElevenTotal
}));

console.log(combinedSales);
输出结果

运行后会得到符合逻辑的统计结果:

[
  {
    orderDate: '2022-11-01',
    sizeNineTotal: 4,
    sizeElevenTotal: 8,
    totalOrder: 12
  },
  {
    orderDate: '2022-11-04',
    sizeNineTotal: 1,
    sizeElevenTotal: 4,
    totalOrder: 5
  }
]

注:你给出的期望输出中2022-11-01的sizeNineTotal为9,和原始数据中的4不符,上述代码是基于你提供的原始数据统计的正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:05:25