多区间判断

/**
* 多区间判断
* @param area
* @returns {number}   错误类型(0正常 1区间重合 2最小值大于最大值 3区间没有连续)
*/
 function checkIfArrayIntervalOverLap(area) {
  let result = 0
  let areaLength = area.length
  if (areaLength > 0) {
    let maxStartArr = []
    let minEndArr = []
    let minStart1 = 0
    let minStart2 = 0
    let maxEnd1 = 0
    let maxEnd2 = 0
    let secondResult = false
    let seriesNumber = 0
    let newMaxEnd = 0
    for (let i = 0; i < areaLength; i++) {
      minStart1 = area[i][0]
      maxEnd1 = area[i][1]
      secondResult = false
      seriesNumber = 0
      // 判断最小值是否大于最大值
      if (minStart1 > maxEnd1 && maxEnd1 !== 0) {
        result = 2
        // 2最小值大于最大值
        return result;
      }
      for (let t = 0; t < areaLength; t++) {
        minStart2 = area[t][0]
        maxEnd2 = area[t][1]

        maxStartArr = [minStart1, minStart2];// 开始课时数组
        minEndArr = [maxEnd1, maxEnd2];// 结束课时数组
        newMaxEnd = Number(maxEnd1 + 1);
        if (i !== t) { // 不与自身比
          // 判断是否有重合区间
          if (Math.max(...maxStartArr) < Math.min(...minEndArr)) {
            secondResult = true
            console.log("判断是否有重合区间")
            result = 1
            break
          }
        }
        if (t - i == 1) {
          if (maxEnd1 != minStart2 && i !== areaLength - 1) {
            result = 3
            // 3区间没有连续
            return result
          }
          if (maxEnd1 == minStart2 && i !== areaLength - 1) {
            result = 0;
            // 0正常
            break;
          }

        }
      }
    }
  }
  return result
}
    // 例子
    // const area = [[0, 8], [8, 13], [13, 3]]
    // var result = checkIfArrayIntervalOverLap(area)
    // console.log(result, 'result')
    // switch (result) {
    //   case 0:
    //     document.write('数据正常')
    //     break;
    //   case 1:
    //     document.write('区间重合')
    //     break;
    //   case 2:
    //     document.write('最小值大于最大值')
    //     break;
    //   case 3:
    //     document.write('区间没有连续')
    //     break;
    // }
posted @ 2021-11-03 11:02  蓝色星空_hkss  阅读(40)  评论(0编辑  收藏  举报