解决思路:
1、分别将所有的起始时间和终止时间添加到两个数组中并排序(如果是日期格式将时间转为毫秒值,再添加到数组中)
2、然后通过循环对比区间

详见原博文地址
根据博文改编,该demo中的时间段是手写的下拉选择,类似下图
在这里插入图片描述
原博文中是把时间转为毫秒值,然后在进行对比,本demo中是只支持选择整点,所以对比的是小时,将起始和终止的小时值push到两个数组中再对比
直接上代码

//判断有没有重复的区间
  judgeSection(arr) {
        var startTimeArr = []
        var endTimeArr = []
        arr.map(function(item) {
            startTimeArr.push(item.startTime ? Number(item.startTime.substr(0,2)) : '')
            endTimeArr.push(item.endTime ? Number(item.endTime.substr(0,2)) : '')
        })
        var allStartTime = startTimeArr.sort((a,b) => a - b) // 排序
        var allEndTime = endTimeArr.sort((a,b) => a - b)
        var result = 0 // 判断时间是否有重复区间
        for (let k = 0; k < allStartTime.length; k++) {
            if (k > 0) {
                if (allStartTime[k] < allEndTime[k - 1]) {
                    result += 1
                }
            }
        }
        return result > 0
    },

原数组数据是

let arr = [{
      startTime: "08:00",
      endTime: "09:00",
  }, {
      startTime: "09:00",
      endTime: "12:00",
  }, {
      startTime: "12:00",
      endTime: "17:00",
  }]
  console.log(this.judgeSection(arr)) // 返回的结果为true表示有重复区间,false则表示没有
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐