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 -> -1Habe 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?
-
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 -> -1Habe 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]; } -
@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]; }
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden