js筛选出当前选中日期 再判断多个时间段是否重复

1.从当前日期筛选出包含当前时间的所有数组

//筛选出当前选中日期的数组
    arrGroup (agendaDate, arr) {
      let soleArr = []
      if (arr.length) {
        arr.forEach(item => {
          if (agendaDate === item.agendaDate) {
            soleArr.push(item)
          }
        });
        return soleArr
      } else {
        return []
      }
    },
//
   
  let arr1=[{"agendaDate": "2023-04-26","id": "5586","agendaTime": "08:00-10:02"},
            {"agendaDate": "2023-04-26","id": "5586","agendaTime": "12:00-13:02"},
            {"agendaDate": "2023-04-25","id": "5586","agendaTime": "12:00-13:02"}]
  let  newArr=this.arrGroup( "2023-04-26",arr1)
             console.log("--newArr", newArr)

 2.从当前的日期去查看是否存在重复的时间段

//筛选出当前选中日期的数组
    arrGroup (agendaDate, arr) {
      let soleArr = []
      if (arr.length) {
        arr.forEach(item => {
          if (agendaDate === item.agendaDate) {
            soleArr.push(item)
          }
        });
        return soleArr
      } else {
        return []
      }
    },


   
  let arr1=[{"agendaDate": "2023-04-26","id": "5586","agendaTime": "08:00-10:02"},
            {"agendaDate": "2023-04-26","id": "5586","agendaTime": "12:00-13:02"},
            {"agendaDate": "2023-04-25","id": "5586","agendaTime": "12:00-13:02"}]
  let  newArr=this.arrGroup( "2023-04-26",arr1)
             console.log("--newArr", newArr)

筛选后的数组判断时间段是否存在重复
  let  dateAr=[]
  arrNew.forEach((item) => {
            let time = item.agendaTime.split("-");
            dateAr.push({ s: time[0], e: time[1] })
          })
          let flag = this.timePeriod(dateAr)
          this.isAllowed = flag
          if (!flag) {
            this.$message.error("该时间已存在议程, 请重新选择时间段!");
            return;
          }  
    //时间段数组是否重复
    timePeriod (dateAr) {
      for (let k in dateAr) {
        if (!this.judege(k, dateAr)) {
          return false
        }
      }
      return true
    },
    //时间段是否重复标志位
    judege (idx, dateAr) {

      for (let k in dateAr) {
        if (idx !== k) {
          if (dateAr[k].s < dateAr[idx].s && dateAr[k].e > dateAr[idx].s) {
            return false
          }
          if (dateAr[k].s < dateAr[idx].e && dateAr[k].e > dateAr[idx].e) {
            return false
          }
        }
      }
      return true
    },
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript判断当前时间是否多个时间段内,可以先获取当前时间,然后使用条件语句进行判断。 首先,获取当前时间可以使用 JavaScript 的内置对象Date(),示例代码如下: let currentTime = new Date(); 接下来,我们可以定义多个时间段的起始时间和结束时间,以数组的形式存储。例如,我定义了两个时间段,分别是8:00-12:00和14:00-18:00,代码如下: let timeRanges = [ {start: '08:00', end: '12:00'}, {start: '14:00', end: '18:00'} ]; 然后,我们可以编写一个函数来判断当前时间是否在这些时间段内。函数中可以遍历时间段数组,每次比较当前时间是否时间段的起始时间和结束时间之间。如果在任何一个时间段内,则返回true,否则返回false。示例代码如下: function isInTimeRanges(currentTime, timeRanges) { for(let i = 0; i < timeRanges.length; i++) { let start = new Date(currentTime.toDateString() + ' ' + timeRanges[i].start); let end = new Date(currentTime.toDateString() + ' ' + timeRanges[i].end); if(currentTime >= start && currentTime <= end) { return true; } } return false; } 最后,我们可以调用这个函数来判断当前时间是否多个时间段内。示例代码如下: if(isInTimeRanges(currentTime, timeRanges)) { console.log('当前时间在指定时间段内'); } else { console.log('当前时间不在指定时间段内'); } 通过上述方法,我们可以判断当前时间是否多个时间段内。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值