[英]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.