判断时间段不能有交叉
function repeatTime(arr) {
for (var k in arr) {
if (!judege(k, arr)) {
return false
}
}
return true //true 不重复 false为重复
}
function judege(index, arr) {
for (var k in arr) {
if (index !== k) {
//判断交叉时间是从第一个对象对比除了本身之外的开始时间和结束时间,如果开始时间在对比对象的开始时间和结束时间之间,或者结束时间在对比对象的开始时间和结束时间之间则是交叉。
if (arr[k].startTime <= arr[index].startTime && arr[k].endTime >= arr[index].startTime) {
return false
}
if (arr[k].startTime <= arr[index].endTime && arr[k].endTime >= arr[index].endTime) {
return false
}
}
}
return true
}
//判断时间段不能有交叉
// var arr =[{ startTime: '01:00', endTime: '02:08' },
// { startTime: '03:04', endTime: '04:05' },
// { startTime: '06:21', endTime: '08:00' },
// {startTime: '15:15', endTime: '18:20'} ] repeatTime(arr) => true
// 时间段是否交叉重复
isHasRepeatTime(data) {
var startTimeArr = [];
var endTimeArr = [];
(data || []).map(function(item) {
startTimeArr.push(item.startTime);
endTimeArr.push(item.endTime);
});
var allStartTime = startTimeArr.sort();
var allEndTime = endTimeArr.sort();
var result = 0;
for(var k=1;k<allStartTime.length;k++){
if (allStartTime[k] < allEndTime[k-1]){
result+=1;
}
}
return result>0;
},