繁体   English   中英

验证时隙相互重叠 - javascript

[英]Validate time slots are overlaping with each other - javascript

我有一个页面,我们可以在其中为给定项目添加可用时间段。 这些时隙可以添加到任何订单中,但所选时隙不应与其他时隙重叠。 所以,在我保存之前,我需要验证所有添加的时隙是否相互重叠。 我的计划是为此添加两个 forloop。 但我想知道还有另一种方法可以用更少的编码更有效地做到这一点。 请分享您对此的看法。

在给定的图像中,09:00 - 11:00 与 08:00 - 10:00 重叠。 所以它不应该允许保存。

我正在尝试添加如下未完成的 for 循环。 我想知道还有另一种方法可以轻松做到这一点。

    function isAnOverlapEvent (inputs) {
    var i;
    var matchingList;

    for (i = 0; i < inputs.length; i++) {
        var item = inputs[i];
        matchingList = inputs;

        matchingList.splice(item.index, 1);

        for (k = 0; k < matchingList.length; k++) {
            
        }                
    }
    return false;
}

有人可以帮我弄这个吗?

长话短说,添加时间段后,您应该将其与已经存在的时间段进行比较,并确保它在每个现有时间段开始之前结束,或者在现有时间段结束之后开始。

如果您想了解有关日期(或时间)比较的更多详细信息,可以阅读这个非常详细的答案

 const existingTimeslots = [{start: 8, end: 10}, {start: 12, end: 14}, {start: 14, end: 16}]; const isNewSlotValid = (newSlot) => { let isValid = true; for(let i = 0; i < existingTimeslots.length; i++) { if((existingTimeslots[i].end > newSlot.start) && (existingTimeslots[i].end <= newSlot.end)) { isValid = false; } } return isValid; } console.log(isNewSlotValid({start: 9, end: 11})); // Should return false console.log(isNewSlotValid({start: 16, end: 18})); // Should return true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM