Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst]: array sortieren nach 2 werten

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

[gelöst]: array sortieren nach 2 werten

Scheduled Pinned Locked Moved JavaScript
javascript
4 Posts 3 Posters 444 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • liv-in-skyL Offline
    liv-in-skyL Offline
    liv-in-sky
    wrote on last edited by 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 Replies Last reply
    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
      wrote on last edited by 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 Reply Last reply
      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
        wrote on last edited by
        #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 Reply Last reply
        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
          wrote on last edited by 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 Reply Last reply
          0
          Reply
          • Reply as topic
          Log in to reply
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes


          Support us

          ioBroker
          Community Adapters
          Donate

          660

          Online

          32.7k

          Users

          82.4k

          Topics

          1.3m

          Posts
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Login

          • Don't have an account? Register

          • Login or register to search.
          • First post
            Last post
          0
          • Home
          • Recent
          • Tags
          • Unread 0
          • Categories
          • Unreplied
          • Popular
          • GitHub
          • Docu
          • Hilfe