JS判断时间段是否重合,返回重合的ID

文章提供了一个JavaScript代码段,用于在一组时间区间内找出与给定ID的时间段有重叠且类型不同的其他ID。它遍历数据结构,通过`judege`函数判断条件并更新结果数组`overlapIndex`。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//数据

validTime
{
	15{
		beginTime: "2023-02-01 00:00:00"
		endTime: "2023-02-28 00:00:00"
		type: "100"
	},
	16:{
		beginTime: "2023-02-06 00:00:00"
		endTime: "2023-02-21 00:00:00"
		type: "100"
	},
	17:{
		beginTime: "2023-02-09 00:00:00"
		endTime: "2023-02-28 00:00:00"
		type: "200"
	}
}
function Fn(overlapIndex) {
   for (let k in validTime) {
        var curIndex = judege(k)
        if(overlapIndex.indexOf(curIndex) == -1) {
            overlapIndex.push(curIndex)
        }
    }
    return overlapIndex
}
function judege(idx) {
    for (let k in validTime) {
        if (idx !== k) {
            if (validTime[k].beginTime <= validTime[idx].beginTime && validTime[k].endTime > validTime[idx].beginTime && validTime[k].type != validTime[idx].type) {
            return idx
            }
            if (validTime[k].beginTime < validTime[idx].endTime && validTime[k].endTime >= validTime[idx].endTime && validTime[k].type != validTime[idx].type) {
            return idx
            }
        }
    }
}

//使用

let overlapIndex = []
//判断和当前政策时间段重复且类型(满N件,满N元)不同的ID
overlapIndex = Fn(overlapIndex)
//数据中17为当前的,所以在返回的数据中去掉17就是和17时间段有重合的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值