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

JavaScript如何将hh:mm格式的跨两天小时数组按小时分组

JavaScript按顺序对时间数组按小时分组实现方案

原代码问题排查

你的代码存在三处核心逻辑错误:

  • 覆盖了原始时间值,把完整时间字符串替换成了纯小时数值,最终无法输出完整的时间结果
  • 判断相等的逻辑错误,没有把前一个元素也做取小时的处理,直接用纯小时和原时间字符串对比,判断逻辑永远不成立
  • 没有考虑跨天后小时重复的场景,直接使用普通对象存储会因为键唯一覆盖掉前一天同小时的数据

实现代码

由于你的输入数组本身已经按时间顺序排列,只需要遍历过程中跟踪上一个分组的小时即可实现顺序分组,避免重复键冲突:

var hours = ["22:37", "22:52", "23:07", "23:22", "23:37", "23:52", "0:07", "0:22", "0:37", "0:52", "1:07", "1:22", "1:37", "1:52", "2:07", "2:22", "3:07", "3:22", "4:07", "4:22", "4:37", "4:52", "5:07", "5:22", "6:07", "6:22",  "7:07", "7:22", "7:37", "7:52", "8:07", "8:22", "8:37", "8:52", "9:07", "9:22", "9:37", "9:52", "10:07", "10:22", "10:37", "10:52", "11:07", "11:22", "11:37", "11:52", "12:07", "12:22", "14:07", "14:52", "15:07", "15:22", "16:07", "16:22", "16:37", "16:52", "17:07",  "17:52", "18:07", "18:22", "18:37", "18:52", "19:07", "19:22", "19:37", "19:52", "20:07", "20:22", "20:37", "20:52", "21:07", "21:22", "21:37", "21:52", "22:07", "22:22", "22:37", "22:52", "23:07", "23:22"]

const groupHours = hours.reduce((result, currentTime) => {
  // 提取当前时间的小时部分
  const currentHour = currentTime.split(':')[0]
  // 取最后一个已存在的分组
  const lastGroup = result[result.length - 1]
  
  if (lastGroup && Object.keys(lastGroup)[0] === currentHour) {
    // 小时和上一个分组相同,直接追加当前时间到分组
    lastGroup[currentHour].push(currentTime)
  } else {
    // 小时不同,新建分组
    result.push({ [currentHour]: [currentTime] })
  }
  return result
}, [])

// 按你需要的格式打印输出
groupHours.forEach(item => {
  const [hour, timeList] = Object.entries(item)[0]
  console.log(`${hour}: ${JSON.stringify(timeList)},`)
})

输出效果

运行后得到的结果完全符合你的需求,跨天的重复小时会被独立成新分组,不会被覆盖:

22: ["22:37","22:52"],
23: ["23:07","23:22","23:37","23:52"],
0: ["0:07","0:22","0:37","0:52"],
1: ["1:07","1:22","1:37","1:52"],
// 中间时段分组省略
21: ["21:07","21:22","21:37","21:52"],
22: ["22:07","22:22","22:37","22:52"],
23: ["23:07","23:22"],

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 10:42:03