ccc: Tabellen - 3-fach-Sortierung wie in Excel möglich?

Hallo,

kann man mit JavaScript Tabellen auch 3-fach sortieren, wie z.B. in Excel. Dort kann man bis zu drei Spalten auswählen und nach denen wird dann sortiert.

Geht so etwas überhaupt mit JavaScript? Falls ja: Hat vielleicht jemand ein Link zu einem Beispiel?

  1. Hallo ccc,

    Die Funktion "Array.sort()" kann man eine Funktion mitgeben, die zwei Elemente vergleicht. Verwendet man nun einen zwei-dimensionalen Array für die Tabelle, so kann man die ersten drei Spalten einfach in dieser Funktion vergleichen:

      
    var array = [[1, "x", 0.4], [2, "a", 3.5]];  
      
    array.sort(function(a, b) {  
      for (var i = 0; i < 3; ++i) {  
        if (a[i] != b[i]) {  
          return a[i] < b[i] ? -1 : 1;  
        }  
      };  
      return 0;  
    });  
    
    

    Statt der for-Schleife ist es natürlich auch möglich, für jede Spalte den Vergleich extra zu implementieren und so die Spalten auf unterschiedliche weise zu vergleichen. Wichtig ist nur, dass man bei gleichen Werten in einer höherrangigen Spalte die nächste Spalte betrachtet.

    Grüße

    Daniel

    1. Oha... nicht schlecht. Muss ich mir mal durch den Kopf gehen lassen. Vielen Dank für deine Antwort.

      1. Hallo ccc!

        Oha... nicht schlecht. Muss ich mir mal durch den Kopf gehen lassen. Vielen Dank für deine Antwort.

        Und wenn irgendwas unklar sein sollte, bitte hier noch mal nachfragen. Es ist durchaus möglich und normal, dass Antworten nicht sofort verständlich werden. Schließlich weiß der Antwortende nicht, und kann nicht immer einschätzen, wie weit ein Fragender mit seinem Wissen ist. Also bei Bedarf: Hier im Thread nachhaken, nur keine Angst!

        Viele Grüße aus Frankfurt/Main,
        Patrick

        --

        _ - jenseits vom delirium - _
        [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
        Nichts ist unmöglich? Doch!
        Heute schon gegökt?
  2. Hallo ccc,

    mein Tabellensortierer sortiert nach einer beliebigen vorgegebenen Spalte und greift bei Gleichheit auf die erste Spalte zurück. Wenn Du die Vergleichsfunktionen (VglFkt_*) anpasst, sollte auch nach mehreren Spalten sortiert werden können.

    Gruß, Jürgen