多区间判断
/**
* 多区间判断
* @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;
// }