Ich entwickle gerade einen Kalender mit allen Standardansichten (Tag, Woche, Monat).Wie filtert man eine sehr große JSON-Zeichenkette, ohne jedes Objekt darin zu durchlaufen?
Um meine Kalenderereignisse zu laden, verwende ich JSON. Wenn die Ereignisse geladen sind, muss ich sie auf der aktiven Ansicht (Tag, Woche oder Monat) zuordnen.
Für jede Ansicht brauche ich nur einen bestimmten Satz von Ereignissen, die Ereignisse zwischen dem Datumsbereich der aktuellen Ansicht (= Zeitrahmen).
Ist es also möglich, die Ereignisse (für das Datum) für jede Ansicht zu filtern, ohne das gesamte JSON-Objekt durchlaufen zu müssen?
Nun ist diese ich tue:
$(eventCache.Events).each(function() {
//CHECK IF THIS EVENT SHOULD BE DISPLAYED
});
Aber die Liste der Ereignisse auf ein paar hundert aufstehen so dass diese Methode die Leistung des Kalenders verlangsamt ...
Diese meine Daten ist ein Beispiel:
{
"d":{
"__type":"GetEventsCacheResult",
"Events":[
{
"Subject":"Subject",
"CalendarId":"139c9edd-b01b-47cf-bae9-18f3e3dca655",
"ColorCode":"#093647",
"Id":"0dab7ad9-46c7-e230-294e-0933e78eadae",
"Description":null,
"DTStartDate":" \/Date(1244596500000)\/",
"DTEndDate":"\/Date(1244610000000)\/",
"StartDate":"10/06/2009 1:15:00",
"EndDate":"10/06/2009 5:00:00",
"AppointmentType":0,
"AllDay":false
},
{
"Subject":"Subject",
"CalendarId":"139c9edd-b01b-47cf-bae9-18f3e3dca655",
"ColorCode":"#093647",
"Id":"0fddb3a0-65f1-08c7-daf2-13da605b499b",
"Description":null,
"DTStartDate":" \/Date(1245823200000)\/",
"DTEndDate":"\/Date(1245832200000)\/",
"StartDate":"24/06/2009 6:00:00",
"EndDate":"24/06/2009 8:30:00",
"AppointmentType":0,
"AllDay":false
},
{
"Subject":"Subject",
"CalendarId":"139c9edd-b01b-47cf-bae9-18f3e3dca655",
"ColorCode":"#093647",
"Id":"a95b8a2b-7c8a-677f-dc58-1c9836d72748",
"Description":null,
"DTStartDate":" \/Date(1247633100000)\/",
"DTEndDate":"\/Date(1247646600000)\/",
"StartDate":"15/07/2009 4:45:00",
"EndDate":"15/07/2009 8:30:00",
"AppointmentType":0,
"AllDay":false
}
],
"Dates":{
"StartDate":"\/Date(1238022000000)\/",
"EndDate":"\/Date(1285106400000)\/"
}
}
}
Sind die Ereignisse sortiert? – Bob
Wenn ich sie sortiert zurücksende, denke ich, dass es der richtige Weg ist, dann kann eine binäre Suche durchgeführt werden. – cgp
Ja, sie sind sortiert – Bundy