Javascript: Sortiere mehrdimensionales Array

8

Ich habe ein multidimensionales Array, das 3 Spalten hat (mit Javascript)

%Vor%

Meine Array-Inhalte sind:

%Vor%

Wie kann ich das Array nach [0] Anzahl der Stimmen und dann nach [2] Kandidatennummer sortieren?

Das Ergebnis sollte lauten:

%Vor%     
Joe Yan 09.08.2011, 08:24
quelle

6 Antworten

15

Wie bereits erwähnt, sollten Sie eine benutzerdefinierte Sortierfunktion verwenden. Hier ist eine, die genau das tun würde, was Sie wollen.

%Vor%     
Bojan Bjelic 09.08.2011, 08:53
quelle
6
%Vor%     
Shock 09.08.2011 08:32
quelle
0

Soweit ich weiß, müssen Sie Ihre eigene Sortierfunktion durchführen Wenn Sie es in einem Objekt speichern können, wird das Ausführen einer Funktion wie in der vorherigen Antwort ausgeführt.
Siehe Sortiere ein Array von Objekten

    
Shadow 09.08.2011 08:36
quelle
0

Hier ist eine generische Funktion

%Vor%     
Nilesh 02.12.2013 23:55
quelle
0

Eine andere Methode besteht darin, für jeden Array-Eintrag, z. 1000 * Anzahl der Stimmen + Kandidatenzahl, so dass dieser Wert eindeutig und eindeutig ist, z. Wir erhalten 1003, 1002, 5, 4, 1. Fügen Sie einen Schlüssel hinzu, der auf das ursprüngliche Array verweist und sortiert.

Also würden wir [[1003,0], [1002,1], [5,2], [4,3], [1,4]] nach dem ersten Element jedes Subarrays sortieren.

Es gibt eine Diskrepanz in Ihrem Sortiersystem, Sie verwenden hohe & gt; niedrig für Stimmen und niedrig-hoch für Kandidatennummer.

    
JonMark Perry 16.12.2014 06:49
quelle
0

Um ein mehrdimensionales Array zu sortieren, das zuerst mit der Koordinate 0 und dann mit der Komponente 2 verglichen wird, können Sie zwei Vergleichsfunktionen mit || kombinieren:

  

vergleichen 0-Koordinaten || vergleichen 2-Koordinaten

Bei numerischen Werten verwenden Sie einfach eine Differenz als Vergleichsfunktion, da x - y ist:

  • 0 wenn x == y
  • & gt; 0 wenn x > y
  • & lt; 0 if x < y

Passen Sie die Reihenfolge der Elemente in den Unterschieden an, um aufsteigende / absteigende Reihenfolge zu berücksichtigen.

%Vor%
    
user2314737 14.07.2017 13:04
quelle