Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst]: array sortieren nach 2 werten

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

[gelöst]: array sortieren nach 2 werten

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
4 Beiträge 3 Kommentatoren 410 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • liv-in-skyL Offline
    liv-in-skyL Offline
    liv-in-sky
    schrieb am zuletzt editiert von liv-in-sky
    #1

    ich habe ein array, welches nach 2 werten sortiert werden soll - die funktion dazu ist
    hat jmd eine idee dazu? evtl. @paul53 vielleicht hast du nochmal lust mir schon wieder zu helfen

       if (sortList==1) {
       myArr.sort(
       function(a, b) {          
          if (a[5] === b[5]) {
             // hier wird nach zahlen sortiert
             return b[4] - a[4];
          }
          return a[5] > b[5] ? 1 : -1;
       });
       
        } else
       
      {  myArr.sort(
       function(a, b) {          
          if (a[5] === b[5]) {
             // hier werden strings sortiert
             return b[0].toUpperCase() - a[0].toUpperCase();
          }
          return a[5] > b[5] ? 1 : -1;
       });
       }
    

    im ersten block (sortlist=1) sind die werte für b[4] - a[4] zahlen - da funktioniert es
    im 2ten block sind b[0] - a[0] strings - da funktioniert es nicht
    da ich das ganze aus github kopiert habe, weiß ich leider nicht, wie ich den 2ten block ändern muss, damit mit strings sortiert werden kann

    beispiel erster block - das datum ist richtig sortiert - in der tabelle sieht man die werte arr[5] nicht - das sind die gelben überschriften

    Image 1.png

    im 2ten block soll nach der ersten spalte sortiert werden

    nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

    paul53P F 2 Antworten Letzte Antwort
    0
    • liv-in-skyL liv-in-sky

      ich habe ein array, welches nach 2 werten sortiert werden soll - die funktion dazu ist
      hat jmd eine idee dazu? evtl. @paul53 vielleicht hast du nochmal lust mir schon wieder zu helfen

         if (sortList==1) {
         myArr.sort(
         function(a, b) {          
            if (a[5] === b[5]) {
               // hier wird nach zahlen sortiert
               return b[4] - a[4];
            }
            return a[5] > b[5] ? 1 : -1;
         });
         
          } else
         
        {  myArr.sort(
         function(a, b) {          
            if (a[5] === b[5]) {
               // hier werden strings sortiert
               return b[0].toUpperCase() - a[0].toUpperCase();
            }
            return a[5] > b[5] ? 1 : -1;
         });
         }
      

      im ersten block (sortlist=1) sind die werte für b[4] - a[4] zahlen - da funktioniert es
      im 2ten block sind b[0] - a[0] strings - da funktioniert es nicht
      da ich das ganze aus github kopiert habe, weiß ich leider nicht, wie ich den 2ten block ändern muss, damit mit strings sortiert werden kann

      beispiel erster block - das datum ist richtig sortiert - in der tabelle sieht man die werte arr[5] nicht - das sind die gelben überschriften

      Image 1.png

      im 2ten block soll nach der ersten spalte sortiert werden

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @liv-in-sky
      String-Vergleiche funktionieren nur, wenn die Strings gleich lang sind, also die Werte führende 0 enthalten.
      Tipp: Wandle in der Funktion erst a[5] und b[5] in Zahlen (Minuten).

      @liv-in-sky sagte in frage: array sortieren nach 2 werten:

      return b[0].toUpperCase() - a[0].toUpperCase();
      

      Was soll eine Substraktion von Strings ergeben ?

      return a[0].toUpperCase() > b[0].toUpperCase() ? 1 : -1;
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      liv-in-skyL 1 Antwort Letzte Antwort
      0
      • liv-in-skyL liv-in-sky

        ich habe ein array, welches nach 2 werten sortiert werden soll - die funktion dazu ist
        hat jmd eine idee dazu? evtl. @paul53 vielleicht hast du nochmal lust mir schon wieder zu helfen

           if (sortList==1) {
           myArr.sort(
           function(a, b) {          
              if (a[5] === b[5]) {
                 // hier wird nach zahlen sortiert
                 return b[4] - a[4];
              }
              return a[5] > b[5] ? 1 : -1;
           });
           
            } else
           
          {  myArr.sort(
           function(a, b) {          
              if (a[5] === b[5]) {
                 // hier werden strings sortiert
                 return b[0].toUpperCase() - a[0].toUpperCase();
              }
              return a[5] > b[5] ? 1 : -1;
           });
           }
        

        im ersten block (sortlist=1) sind die werte für b[4] - a[4] zahlen - da funktioniert es
        im 2ten block sind b[0] - a[0] strings - da funktioniert es nicht
        da ich das ganze aus github kopiert habe, weiß ich leider nicht, wie ich den 2ten block ändern muss, damit mit strings sortiert werden kann

        beispiel erster block - das datum ist richtig sortiert - in der tabelle sieht man die werte arr[5] nicht - das sind die gelben überschriften

        Image 1.png

        im 2ten block soll nach der ersten spalte sortiert werden

        F Offline
        F Offline
        fastfoot
        schrieb am zuletzt editiert von
        #3

        @liv-in-sky Vielleicht hilf das kleine Beispiel

        //https://stackoverflow.com/questions/4340227/sort-mixed-alpha-numeric-array
        var reA = /[^a-zA-Z]/g;
        var reN = /[^0-9]/g;
        
        function sortAlphaNum(a, b) {
          var aA = a.replace(reA, "");
          var bA = b.replace(reA, "");
          if (aA === bA) {
            var aN = parseInt(a.replace(reN, ""), 10);
            var bN = parseInt(b.replace(reN, ""), 10);
            return aN === bN ? 0 : aN > bN ? 1 : -1;
          } else {
            return aA > bA ? 1 : -1;
          }
        }
        console.log(
        ["A1", "A10", "A11", "A12", "A2", "A3", "A4", "B10", "B2", "F1", "F12", "F3"].sort(sortAlphaNum)
        )
        

        iobroker läuft unter Docker auf QNAP TS-451+
        SkriptRecovery: https://forum.iobroker.net/post/930558

        1 Antwort Letzte Antwort
        1
        • paul53P paul53

          @liv-in-sky
          String-Vergleiche funktionieren nur, wenn die Strings gleich lang sind, also die Werte führende 0 enthalten.
          Tipp: Wandle in der Funktion erst a[5] und b[5] in Zahlen (Minuten).

          @liv-in-sky sagte in frage: array sortieren nach 2 werten:

          return b[0].toUpperCase() - a[0].toUpperCase();
          

          Was soll eine Substraktion von Strings ergeben ?

          return a[0].toUpperCase() > b[0].toUpperCase() ? 1 : -1;
          
          liv-in-skyL Offline
          liv-in-skyL Offline
          liv-in-sky
          schrieb am zuletzt editiert von liv-in-sky
          #4

          @paul53 (mein problem war ja, das es keinen sinn macht, das strings von einander abgezogen werden 🙂 ) genau dafür habe ich ersatz gesucht

          @fastfoot (ds beispiel funktioniert nur, wenn keine leerzeichen vorhanden sind und mind. eine zahl im text steht - sonst macht parseInt ein "NAN" ergebnis - bei mir soll es nur um alphabeitisch sortierung gehen)

          danke für eure inputs - hat etwas gedauert habe aber dadurch eine lösung gefunden

          Image 4.png

            myArr.sort(
                           
                           function(a, b) {
                                                      var aA = a[5]//.replace(reA, "");
                                                      var bA = b[5]//.replace(reA, "");
                                                      if (aA === bA) {
                                                                       return a[0].toLowerCase().localeCompare(b[0].toLowerCase());
          															
            }
          });
          

          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

          1 Antwort Letzte Antwort
          0
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          391

          Online

          32.4k

          Benutzer

          81.4k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          ioBroker Community 2014-2025
          logo
          • Anmelden

          • Du hast noch kein Konto? Registrieren

          • Anmelden oder registrieren, um zu suchen
          • Erster Beitrag
            Letzter Beitrag
          0
          • Aktuell
          • Tags
          • Ungelesen 0
          • Kategorien
          • Unreplied
          • Beliebt
          • GitHub
          • Docu
          • Hilfe