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

JS如何将含日期与ID的数组按年月分组并按时间升序排列

// 定义月份英文缩写映射
const monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];

// 临时分组对象
const groupMap = {};

myArray.forEach(item => {
  // 拆分日期获取年、月
  const [year, month] = item.date.split('-');
  // 用年-月作为分组key,方便后续排序
  const groupKey = `${year}-${month}`;
  
  // 不存在分组则初始化
  if (!groupMap[groupKey]) {
    groupMap[groupKey] = [];
  }
  // 把当前项加入分组
  groupMap[groupKey].push(item);
});

// 转成目标格式并按时间升序排序
const result = Object.entries(groupMap)
  // 先按年月排序,最早的在前
  .sort(([keyA], [keyB]) => keyA.localeCompare(keyB))
  // 转换为要求的输出结构
  .map(([key, data]) => {
    const [year, month] = key.split('-');
    return {
      month_year: `${monthNames[Number(month) - 1]} ${year}`,
      data: data
    }
  });

console.log(result);

上述代码适配你给出的输入日期格式,输出结构完全符合要求,同分组内元素保持原数组的出现顺序,若需要调整同分组内的日期排序逻辑,可在map阶段对data追加sort处理即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:12:03