NEWS
[gelöst] Sortieren eines Arrays
-
Hallo,
habe Probleme mein Array aus Objekten zu sortieren. Da tage.von ein String sind versuche ich es auf diese Art und Weise.
var tage = [{"feiertag":"a","von":"18.02.2022", "bis":"19.02.2022"},{"feiertag":"b","von":"27.05.2021","bis":"28.05.2021"}]; tage.sort( function(a, b) { if (a.von === b.von) { return ('' + a.bis).localeCompare(b.bis); } return ('' + a.von).localeCompare(b.von); } );
Leider wird 18 vor 19 einsortiert. Beispiele:
14:03:35.545 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 21.02.2022 mit 23.12.2021 -> -1 14:03:35.545 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 21.02.2022 mit 23.12.2021 -> -1 14:03:35.546 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 21.02.2022 mit 11.10.2021 -> 1 14:03:35.546 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 28.02.2022 mit 21.02.2022 -> 1 14:03:35.546 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 28.02.2022 mit 23.12.2021 -> 1 14:03:35.546 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 11.04.2022 mit 23.12.2021 -> -1 14:03:35.546 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 11.04.2022 mit 21.02.2022 -> -1 14:03:35.546 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 11.04.2022 mit 11.10.2021 -> -1 14:03:35.546 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 27.05.2022 mit 21.02.2022 -> 1 14:03:35.546 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 27.05.2022 mit 28.02.2022 -> -1 14:03:35.546 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 27.05.2022 mit 23.12.2021 -> 1 14:03:35.546 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 17.06.2022 mit 23.12.2021 -> -1 14:03:35.546 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 17.06.2022 mit 11.10.2021 -> 1 14:03:35.546 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 17.06.2022 mit 21.02.2022 -> -1 14:03:35.546 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 03.10.2021 mit 21.02.2022 -> -1 14:03:35.546 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 03.10.2021 mit 11.10.2021 -> -1 14:03:35.546 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 03.10.2021 mit 11.04.2022 -> -1 14:03:35.546 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 01.11.2021 mit 21.02.2022 -> -1 14:03:35.547 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 01.11.2021 mit 11.10.2021 -> -1 14:03:35.547 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 01.11.2021 mit 11.04.2022 -> -1 14:03:35.547 info javascript.0 (19539) script.js.DEV.Webunits.Webuntis-3: vergleiche: 01.11.2021 mit 03.10.2021 -> -1
Habe auch versucht mit a.von.toString und b.von.toString zu vergleichen, aber das klappt auch nicht.
Was mache ich falsch, bzw. wie kann ich die Sortierung als Strings erzwingen?
-
@a200
Strings können nur verglichen / sortiert werden, wenn der höherwertige Teil (das Jahr) vorn steht, z.B. "JJJJMMTT".Übergebe das Datum über eine Funktion an den Vergleich.
function drehen(datum) { datum = datum.split('.'); return datum[2] + datum [1] + datum[0]; }
-
@paul53
und wie würdest du mein Problem lösen? In date umwandeln und als date vergleichen? Was wäre die feine und smarte Lösung?Hast du in der Zwischenzeit erledigt! Danke.Funktioniert bestens! Danke!