2016-04-14 7 views
0

Durch meine Suche habe ich festgestellt, dass die folgende einfache Logik wirklich gut funktioniert, um sicherzustellen, dass zwei Zeitbereiche sich nicht überschneiden.Gute Möglichkeit, mehrere nicht überlappende Zeiträume sicherzustellen

(StartA <= EndB) and (EndA >= StartB) 

Aber es beginnt umständlich (mit meinem derzeitigen Ansatz), wenn ich viele Zeitbereiche verwenden muss. Viele If-Anweisungen und solche.

Was ist ein besserer Ansatz? Ich habe darüber nachgedacht, Arrays zu füllen, die 15-Minuten-Intervallen entsprechen, und eine Überprüfung durchzuführen, ob diese Array-Plätze "besetzt" sind, wenn ein neuer Zeitbereich hinzugefügt wird.

Dies wird Javascript verwenden, also weiß ich nicht, ob Arrays am besten geeignet/leicht sind.

Antwort

1

Ein einfacher Weg wäre, die Daten in einem Array zu speichern, nach Startdatum zu sortieren und dann zu überprüfen, ob sich die Daten überschneiden. Hier ist ein Beispiel:

var dates = []; 
var addDate = function(start, end){ 
    dates.push({start: start, end: end}); 
}; 
var datesOverlap = function(){ 
    var i; 
    dates.sort(function(a, b){ return a.start-b.start;}); 
    for(i=0; i<dates.length-1; i++){ 
    if(dates[i].end >= dates[i+1].start){ 
     return true; // dates overlap 
    } 
    } 
    return false; // no dates overlap 
}; 

Fügen Sie alle Daten, die Sie mit der addDate Funktion überprüfen möchten. Dann würden Sie die Funktion datesOverlap aufrufen, um zu überprüfen, ob sich Daten überschneiden.

+0

Sieht aus wie eine wirklich leichte Lösung auch, danke! – Burninrock24

Verwandte Themen