我有一个文本框,用于询问每天有多少匹配的时间表。基于此,我需要获得整个计划的开始时间和结束时间。
如果用户可以输入3个时间表,那么我需要获得3个3个开始时间和结束时间。这工作正常,但问题是我需要避免相互冲突的时间。
例如
安排时间:开始时间是9:00,结束时间是8:30(时间冲突)
- 醇>
时间表1是9:30到12:30,时间表2是10:30到13:30(时间表冲突)
这些是我需要避免的冲突,有人帮助我。
我试过这个示例点击按钮,显示:
答案 0 :(得分:0)
您可以使用以下功能确定两个数字范围是否重叠。它接受两个[start, end]
形式的数组。
function rangesOverlap(range1, range2) {
return range1[1] > range2[0] && range2[1] > range1[0];
}
假设您有一系列范围,以确定没有重叠:
function noneOverlap(ranges) {
var untestedRanges = ranges.slice();
return ranges.every(function(range1) {
untestedRanges.shift();
return untestedRanges.every(function(range2) {
return ! rangesOverlap(range1, range2);
});
});
}
例如:
noneOverlap([[0,1],[0,2]]) // => false
noneOverlap([[0,1],[2,3]]) // => true