问题描述
区间输入相关问题处理
适用场景 多个区间之间输入 左边最小值 右边最大值 区间之间是否存在相交 重复问题
一、 界面
二、 区间一至区间五值相交校验
let arr:object[] = [{min:1,max:2},{min:2,max:4},{min:4,max:7},{min:7,max:9}]
//相交返回true 未相交返回false
// 区间相交校验
const sectionIntersect = (arr: any): boolean => {
let len: number = arr.length;
let bol: boolean = false
for (let i: number = 0; i < len - 1; i++) {
for (let j: number = i + 1; j < len; j++) {
if ((arr[i].min !== '' && arr[i].max !== '') && (arr[j].min !== '' && arr[j].max !== '')) {
if (arr[i].min === arr[j].min && arr[i].max === arr[j].max) {
let start: any[] = [Math.min(arr[i].min), Math.min(arr[j].min)];
let end: any[] = [Math.max(arr[i].max), Math.max(arr[j].max)];
if (Math.max(...start) < Math.min(...end)) {
bol = true
}
}
}
}
}
return bol
}
三、 区间一至区间五值重复校验
let arr:object[] = [{min:1,max:2},{min:2,max:4},{min:4,max:7},{min:7,max:9}]
//重复返回true 未重复返回false
const equalityCheck = (arr: any): boolean => {
let bol: boolean = false
let len: number = arr.length;
for (let i: number = 0; i < len - 1; i++) {
for (let j: number = i + 1; j < len; j++) {
if ((arr[i].min !== '' && arr[i].max !== '') && (arr[j].min !== '' && arr[j].max !== '')) {
if (arr[i].min === arr[j].min && arr[i].max === arr[j].max) {
bol = true
}
}
}
}
return bol
}
四、 区间一至区间五校验左边是不是最小值 右面是不是最大值
let arr:object[] = [{min:1,max:2},{min:2,max:4},{min:4,max:7},{min:7,max:9}]
//未通过返回true 通过返回false
const verificationMaxMin = (val: any, sign: number) => {
if (String(val.max) !== '' && String(val.min) !== '') {
if (Number(val.max) > Number(val.min)) {
return false
} else {
return true
notification.warning({
message: `左边为最小值右边为最大值`,
});
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)