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
相关产品推荐
相关产品推荐

