// 1:大于 2:小于 3:等于 4:区间
let arr = [
{ type: 1, max: 21, },
{ type: 2, min: 10 },
{ type: 3, min: 21, },
{ type: 4, min: 10, max: 20 },
]
function IntervalValidator(rows) {
let interval = [] // 区间集合
rows.forEach((item, i) => {
if (item.type === 1) { // 大于符号
interval.push({ min: parseInt(item.max) + 1, max: Infinity })
} else if (item.type === 2) { // 小于符号
interval.push({ min: -Infinity, max: parseInt(item.min) - 1 })
} else if (item.type === 3) { // 等于符号
interval.push({ min: parseInt(item.min), max: parseInt(item.min) })
} else if (item.type === 4) { // 区间符号(包含自身)
interval.push({ min: parseInt(item.min), max: parseInt(item.max) })
}
})
let isNo = false // 区间是否重叠
for (let i = 0; i < interval.length; i++) {
for (let j = 0; j < interval.length; j++) {
if (i !== j) { // 排除它自身
if (Math.max(interval[i].min, interval[j].min) <= Math.min(interval[i].max, interval[j].max)) {
console.log('区间重叠')
isNo = true
break
}
}
}
if (isNo) {
break
}
}
return isNo ? true : false
}
多个区间 区分是否重叠
最新推荐文章于 2025-03-01 07:08:44 发布