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

JavaScript如何对嵌套数组中的时间数据排序?适用于NFL赛程数据场景

2021年NFL周日赛程筛选排序实现方案

实现逻辑

  • 第一步:筛选指定周的周日有效比赛
    遍历所有球队数据,提取符合「周数匹配、比赛日为周日、客场球队记录」的场次,避免单场比赛重复录入
  • 第二步:时间字符串转可比较数值
    将XX:XX AM/PM格式的开球时间转换为当日总分钟数,消除字符串排序的格式误差,适配所有非固定开球时间场景
  • 第三步:按分钟数升序排列,输出排序后的赛程数组

参考代码(JavaScript)

// 输入参数:原始赛程数组allTeams、目标周数targetWeek
function sortSundaySchedule(allTeams, targetWeek) {
  // 1. 筛选符合要求的比赛
  const sundayGames = allTeams.flatMap(team => {
    return team.schedule.filter(game => 
      game.week === targetWeek.toString() && 
      game.weekday === 'Sunday' && 
      game.homeAway === 'away' // 仅取客场记录去重
    ).map(game => ({
      ...game,
      homeTeam: game.opponent,
      awayTeam: team.name
    }))
  })

  // 2. 时间转分钟数的工具函数
  const timeToMinutes = (timeStr) => {
    const [time, period] = timeStr.split(' ')
    const [hours, minutes] = time.split(':').map(Number)
    let totalHours = hours
    if (period === 'PM' && hours !== 12) totalHours += 12
    if (period === 'AM' && hours === 12) totalHours = 0
    return totalHours * 60 + minutes
  }

  // 3. 按开球时间升序排序
  return sundayGames.sort((a, b) => timeToMinutes(a.time) - timeToMinutes(b.time))
}

代码说明

  • 自动去重:通过仅提取客场球队的赛程记录,避免每场比赛在主客两队的赛程中重复出现,保证单周比赛数量符合预期
  • 兼容性强:时间转换逻辑支持所有AM/PM格式的时间点,不限于常规的三个开球时段
  • 输出字段可自定义:可根据需求在map阶段新增/删减返回的赛程字段,比如球队ID、转播渠道、场馆信息等

内容的提问来源于stack exchange,提问作者John G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:09:04