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

如何在JavaScript中按星期对API返回的订单对象分组

按星期几分组订单数据并整理为指定结构

需求说明

从API获取的订单数据包含createdDate、orderId、customerId字段,需要将这些订单按星期几(SUN到SAT)分组,最终输出结构需满足:

  • period字段固定为'lastWeek'
  • data数组包含7个对象,分别对应SUN到SAT,每个对象的value数组存放对应星期的订单,无数据则为空数组

实现示例(JavaScript)

1. 模拟API返回的订单数据

const apiOrders = [
  { orderId: 'ORD001', customerId: 'CUS001', createdDate: '2022-09-20' }, // 周二
  { orderId: 'ORD002', customerId: 'CUS002', createdDate: '2022-09-20' }, // 周二
  { orderId: 'ORD003', customerId: 'CUS003', createdDate: '2022-09-21' }  // 周三
];

2. 核心处理逻辑

// 定义星期顺序:SUN到SAT
const weekDays = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];

// 辅助函数:根据日期字符串获取对应的星期缩写
const getWeekDay = (dateStr) => {
  const date = new Date(dateStr);
  // getDay()返回0(周日)到6(周六),对应weekDays的索引
  return weekDays[date.getDay()];
};

// 分组订单并构建目标结构
const groupOrdersByWeekDay = (orders) => {
  // 初始化所有星期的分组,确保顺序严格为SUN到SAT
  const initialGroups = weekDays.map(day => ({ day, value: [] }));
  
  // 将每个订单分配到对应星期的分组中
  orders.forEach(order => {
    const day = getWeekDay(order.createdDate);
    const targetGroup = initialGroups.find(group => group.day === day);
    if (targetGroup) {
      targetGroup.value.push(order);
    }
  });
  
  return {
    period: 'lastWeek',
    data: initialGroups
  };
};

// 执行处理并输出结果
const finalResult = groupOrdersByWeekDay(apiOrders);
console.log(finalResult);

3. 最终输出结果

{
  period: 'lastWeek',
  data: [
    { day: 'SUN', value: [] },
    { day: 'MON', value: [] },
    { day: 'TUE', value: [
        { orderId: 'ORD001', customerId: 'CUS001', createdDate: '2022-09-20' },
        { orderId: 'ORD002', customerId: 'CUS002', createdDate: '2022-09-20' }
      ]
    },
    { day: 'WED', value: [
        { orderId: 'ORD003', customerId: 'CUS003', createdDate: '2022-09-21' }
      ]
    },
    { day: 'THU', value: [] },
    { day: 'FRI', value: [] },
    { day: 'SAT', value: [] }
  ]
}

关键细节

  • 先初始化所有星期的分组,保证data数组严格遵循SUN到SAT的顺序,无数据时自动保留空数组
  • getWeekDay函数利用Date.getDay()的返回值(0对应周日,6对应周六)匹配预设的星期缩写数组
  • 遍历订单时直接定位对应分组,避免遗漏或顺序错乱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:10:27