/* 判断数组多区间间是否重合
* @param area
* @returns {number} 返回值 0-正常 1-区间重合 2-最小值大于最大值 3-区间没有连续
*/
export function checkIfArrayIntervalOverLap(list) {
let result = 0
let listLength = list.length
if (listLength > 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 < listLength; i++) {
minStart1 = list[i][0]
maxEnd1 = list[i][1]
secondResult = false
seriesNumber = 0
// 判断最小值是否大于最大值
if (minStart1 > maxEnd1 && maxEnd1 !== 0) {
result = 2
break;
}
for (let t = 0; t < listLength; t++) {
minStart2 = list[t][0]
maxEnd2 = list[t][1]
if (i !== t) { // 不与自身比
maxStartArr = [minStart1, minStart2];// 开始课时数组
minEndArr = [maxEnd1, maxEnd2];// 结束课时数组
newMaxEnd = Number(maxEnd1 + 1);
// 判断数字是否连续
if (newMaxEnd === minStart2) {
seriesNumber = seriesNumber + 1;
}
// 判断是否有重合区间
if (Math.max(...maxStartArr) <= Math.min(...minEndArr)) {
secondResult = true
result = 1
break;
}
}
}
// 判断是否有重合区间返回结果
if (secondResult === true) {
break;
}
// 判断区间是否连续
if (seriesNumber !== 1 && i !== listLength - 1) {
result = 3
break;
}
}
}
return result
}
//调用
const list = [[1,4],[3,5],[6,7]]
const result = checkIfArrayIntervalOverLap(list)
javascript判断数组多区间间是否重合
于 2023-11-16 09:38:17 首次发布