js校验多个时间段的时间是否有交叉

参考博客:
Java日期时间API系列37-----时间段是否有重叠(交集)的计算方法
Java 最优雅方式校验时间段重叠

判断是否有交叉数据

       let timePeriod = [
        {
          start: dateList[0].value, //时间段1的开始时间 时间格式为1130(代表11:30)
          end: dateList[1].value,//时间段1的结束时间
        }{
          start: dateList[2].value, //时间段2的开始时间
          end: dateList[3].value,//时间段2的结束时间
        }{
          start: dateList[4].value, //时间段3的开始时间
          end: dateList[5].value,//时间段3的结束时间
        }{
          start: dateList[6].value, //时间段4的开始时间
          end: dateList[7].value,//时间段4的结束时间
        }{
          start: dateList[8].value, //时间段5的开始时间
          end: dateList[9].value,//时间段5的结束时间
        }{
          start: dateList[10].value, //时间段6的开始时间
          end: dateList[11].value,//时间段6的结束时间
        }]
        
        // 先按开始时间排序(需要保证开始时间小于结束时间)
        timePeriod.sort((a, b) => {
          return a.start - b.start
        })
        
        // 去除时间为空的时间段
        let timePeriodValue = timePeriod.filter(item => item.start != "") || []
        // 循环一遍,看有无交叉数据
        for (let i = 1; i < timePeriodValue.length; i++) {
          // !(timePeriodValue[i - 1].end < timePeriodValue[i].start) 时间段交叉(严格)
          // 如果1030与1030不算交叉 则!(timePeriodValue[i - 1].end <=timePeriodValue[i].start)  (非严格)
          if ( !timePeriodValue[i - 1].end < timePeriodValue[i].start ) {
            return callback(new Error("时间段不能交叉!")
          }
        }

你可能感兴趣的:(javascript,开发语言)