Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Sortieren eines Arrays

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Sortieren eines Arrays

    This topic has been deleted. Only users with topic management privileges can see it.
    • a200
      a200 last edited by a200

      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?

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @a200 last edited by paul53

        @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 1 Reply Last reply Reply Quote 1
        • a200
          a200 @paul53 last edited by a200

          @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!

          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          668
          Online

          31.8k
          Users

          80.0k
          Topics

          1.3m
          Posts

          javascript
          2
          3
          175
          Loading More Posts
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes
          Reply
          • Reply as topic
          Log in to reply
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          The ioBroker Community 2014-2023
          logo