区间输入相关问题处理

问题描述

区间输入相关问题处理

适用场景 多个区间之间输入 左边最小值 右边最大值 区间之间是否存在相交 重复问题
一、 界面

在这里插入图片描述

二、 区间一至区间五值相交校验
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 (将#修改为@)