实现一个vue js小算法 选择不同的时间段 不交叉

以上图片选择了时间段 现在需要判断 当前选择的时间段 不能够是 有交叉的所以现在需要循环判断

//判断时间段是否重叠交叉
export function areIntervalsNonOverlapping(intervals:any) {
  // 辅助函数:将时间字符串转换为从当天午夜开始计算的分钟数
  function convertToMinutes(timeString:any) {
    const [hours, minutes, seconds] = timeString.split(':').map(Number)
    return hours * 60 + minutes // 忽略秒数,如果需要更高精度可以加上 seconds
  }

  // 转换时间并排序
  const sortedIntervals = intervals
    .map(interval => ({
      ...interval,
      beginMinutes: convertToMinutes(interval.polishBeginTime),
      endMinutes: convertToMinutes(interval.polishEndTime),
    }))
    .sort((a, b) => a.beginMinutes - b.beginMinutes)

  // 检查重叠
  for (let i = 1; i < sortedIntervals.length; i++) {
    const current = sortedIntervals[i]
    const previous = sortedIntervals[i - 1]

    // 处理跨越午夜的情况
    if (
      current.beginMinutes < previous.endMinutes ||
      (current.beginMinutes === 0 && previous.endMinutes > 23 * 60)
    ) {
      return false // 重叠
    }
  }

  return true // 没有重叠
}

以上就是这个算法 

传入数组 就可以

我的数组格式 是 

[
{
//判断时间段是否重叠交叉
polishBeginTime:"01:00:00"
polishEndTime:"02:00:00"



}

]

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-15 04:46:03       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-15 04:46:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-15 04:46:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-15 04:46:03       18 阅读

热门阅读

  1. MySQL(7)

    2024-06-15 04:46:03       8 阅读
  2. 1606 - 求一个两位数倒序的结果

    2024-06-15 04:46:03       8 阅读
  3. LeetCode 2848. Points That Intersect With Cars

    2024-06-15 04:46:03       7 阅读
  4. [xmake]xmake常用命令

    2024-06-15 04:46:03       8 阅读
  5. 虚幻引擎 Apple Vision Pro 快速入门指南

    2024-06-15 04:46:03       18 阅读
  6. HOW - CSS 常见效果实现

    2024-06-15 04:46:03       8 阅读
  7. 无理数的渊源

    2024-06-15 04:46:03       7 阅读
  8. 使用Spring Boot设计一套BI系统

    2024-06-15 04:46:03       7 阅读
  9. Rust 异步编程

    2024-06-15 04:46:03       9 阅读