js对于数字或者时间区间校验

背景: 对于数字或者时间区间校验

  1. 开始不能大于结束
  2. 所有区间不可有重叠例如 1. 0 js对于数字或者时间区间校验_第1张图片
 /**
     * 计费条件 交叉重叠判断
     * 1.开始大于结束: 交叉
     * 2.某条数据开始或结束在其他任意条数据区间内: 交叉
     */
    intervalCheck(arr) {
      const result = arr.every((item, index) => {
      // 取出单条数据的开始和结束
        const { startNum, endNum } = item
        const start1 = Number(startNum)
        const end1 = Number(endNum)
        // 比较开始是否大于结束
        const ret01 = start1 > end1

        // 2.某条数据生效时间或失效时间在其他任意条数据区间内: 交叉
        const otherData = arr.filter((v, indexs) => index !== indexs)
        let ret02 = false
        if (otherData.length) {
          ret02 = otherData.some(v => {
            const { startNum, endNum } = v
            const start2 = Number(startNum)
            const end2 = Number(endNum)
            // 主要对比取出的一条和其他条进行对比  且 取出开始如果大于等于其他开始且取出开始小于等于其他结束 或者取出结束大于等于其他开始且 取出结束小于其他结束
            return (start1 >= start2 && start1 < end2) || (end1 > start2 && end1 <= end2)
          })
        }
        return !ret01 && !ret02
      })
      return result   // 校验都通过了会return true
    },

你可能感兴趣的:(工作需求,javascript,前端,开发语言)