为了账号安全,请及时绑定邮箱和手机立即绑定

javascript如何获取多个时间段关联的时间点

javascript如何获取多个时间段关联的时间点

30秒到达战场 2018-11-07 13:17:43
假设有如下时间段00:00 - 03:0003:00 - 03:3001:00 - 03:2012:30 - 14:0013:36 - 15:00此时,03:00就是一个时间点,因为03:00都包含在每个时间段内,14:00或者13:36是一个时间点那么,如何在多个时间段内获取这个关联节点呢?只需要一个时间节点就可以了。或者说我如何将这些时间段分组[00:00 - 03:0003:00 - 03:3001:00 - 03:20][12:30 - 14:0013:36 - 15:00 ]
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

就是把同个区间的时间分在一组吧,很简单,先排好序,再找出开始比前一个时间段的结尾要后的就行。

假设时间以 Number 方式存(距离 1 January 1970 00:00:00 UTC 的毫秒数)

时间段结构:

{

  start: 1493125454502,

  end: 1493125454516

}

function sortTime (times) {

  if (times.length <= 1) { return times }


  times = times.sort((a, b) => a.start !== b.start ? a.start - b.start : a.end - b.end)


  let result = []

  let beginIndex = 0


  for (let i = 1; i < times.length; i += 1) {

    if (times[i].start > times[i - 1].end) {

      result.push(times.slice(beginIndex, i))

      beginIndex = i

    }

  }


  if (beginIndex !== times.length) {

    result.push(times.slice(beginIndex, times.length))

  }


  return result

}


查看完整回答
反对 回复 2018-12-10
  • 1 回答
  • 0 关注
  • 614 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信