Ich habe folgende Intervalle mit Start- und Endzeit:Finden überlappende zwischen den Intervallen in Javascript/Typoskript
{ status: 'A', start: 12:20, end: 12:35},
{ status: 'B', start: 12:21, end: 12:28},
{ status: 'C', start: 12:22, end: 12:30},
{ status: 'D', start: 12:30, end: 12:45},
{ status: 'E', start: 12:40, end: 12:48}
Wie Sie sehen können, gibt es einige Überschneidungen, wie: 12:22 -->12:28
die A, B, and C
Status enthält. oder D and E
, die 12:40 -->12:45
Überlappung haben. Alle Daten werden basierend auf ihrer Startzeit sortiert. Wie kann ich ein Programm in Javascript schreiben, um die Überlappungen und ihre entsprechenden Status zu haben?
Grundsätzlich wäre die Ausgabe wie folgt vor:
[A, B, C] : {12:22 , 12:28}
[D, E] : {12:40 , 12:45}
...
Aktuelle Code findet zwei Überschneidungen:
const schedule = [
{ status: 'A', start: '12:20', end: '12:35'},
{ status: 'B', start: '12:21', end: '12:28'},
{ status: 'C', start: '12:22', end: '12:30'},
{ status: 'D', start: '12:30', end: '12:45'},
{ status: 'E', start: '12:40', end: '12:48'}
]
const intervali = {start: '', end:'', status:''};
for (i = 0; i < schedule.length - 1; i++) {
interval_i = schedule[i];
for (j = i + 1; j < schedule.length; j++) {
interval_j = schedule[j];
if (interval_j.start < interval_i.end && interval_j.end > interval_i.start) {
intervali['start'] = interval_i.start > interval_j.start ? interval_i.start : interval_j.start;
intervali['end'] = interval_i.end < interval_j.end ? interval_i.end : interval_j.end;
intervali['status'] = interval_i.status + ' - ' + interval_j.status;
console.log(intervali)
}
}
}
Haben Sie versucht, verschachtelte Schleifen verwenden? – VtoCorleone
Sie haben sie, sie sind genau dort. – Mvarta
@VtoCorleone Ja, aber es werden nicht alle überlappenden Intervalle zurückgegeben. – Eni