Das Beispiel in diesem Artikel beschreibt die Sortiermethode des JavaScript-Objektarrays. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Die Sortiermethode der Array-Sortierfunktion von Javascript sortiert standardmäßig in aufsteigender Reihenfolge entsprechend der ASCII-Zeichenreihenfolge.
arrayobj.sort(sortfunction);
Parameter: sortFunction
Optional. ist der Name der Funktion, mit der die Reihenfolge der Elemente bestimmt wird. Wenn dieser Parameter weggelassen wird, werden die Elemente in aufsteigender ASCII-Zeichenreihenfolge sortiert.
Diesort-Methode sortiert Array-Objekte entsprechend; während der Ausführung werden keine neuen Array-Objekte erstellt.
Wenn eine Funktion für das Argument sortfunction bereitgestellt wird, muss die Funktion einen der folgenden Werte zurückgeben:
Negativer Wert, wenn der erste übergebene Parameter kleiner als der zweite Parameter ist.
Null, wenn beide Argumente gleich sind.
Positiver Wert, wenn das erste Argument größer als das zweite Argument ist.
Die obige Methode ist für die eindimensionale Sortierung sehr praktisch, aber wie führt man eine Sortierung nach mehreren Schlüsselwerten wie ORDER BY in SQL-Anweisungen durch?
Die Sortierung mehrdimensionaler Arrays mit mehreren Schlüsselwerten muss komplizierter sein, es besteht jedoch keine Notwendigkeit, Schleifen zu verwenden, um das Problem zu lösen. Die tatsächliche Lösung ist dieselbe.
Nummer:
Das folgende Beispiel besteht darin, ein mehrdimensionales Array von Zahlen in der Reihenfolge Spalte 5, Spalte 9 und Spalte 3 zu sortieren, wie ORDER BY col5, col9, col7 in der SQL-Anweisung. Wenn es um Zahlen geht, können Sie die beiden Elemente direkt subtrahieren und das Ergebnis als Rückgabewert verwenden.
<script language=javascript> var myArray = new Array(); for(var i=0;i<10;i++ ){ myArray[i]=new Array(); myArray[i][0]=Math.floor(Math.random()*10); myArray[i][1]=Math.floor(Math.random()*10); myArray[i][2]=Math.floor(Math.random()*10); myArray[i][3]=Math.floor(Math.random()*10); myArray[i][4]=Math.floor(Math.random()*10); myArray[i][5]=Math.floor(Math.random()*10); myArray[i][6]=Math.floor(Math.random()*10); myArray[i][7]=Math.floor(Math.random()*10); myArray[i][8]=Math.floor(Math.random()*10); } myArray.sort( function(x, y) { if(x[4]!=y[4]){ return x[4]-y[4]; } else if(x[8]!=y[8]){ return x[8]-y[8]; } else if(x[6]!=y[6]){ return x[6]-y[6]; } else { return 1; } } ); for(var i=0;i<myArray.length;i++ )...{ document.write(myArray[i].join(",") + "<br/>"); } </script>
Charakter:
Zeichen, die Elemente in sortFunction können nicht direkt wie Zahlen subtrahiert werden. Sie müssen zum Vergleich die Methode str1.localeCompare(str2) aufrufen, um den Rückgabewert zu erfüllen. Im Folgenden werden die Spalten 1 und 2 eines mehrdimensionalen Arrays sortiert.
function sortFunction(array) { return array.sort( function(x, y) ...{ return (x[0]==y[0])?(x[1].localeCompare(y[1])):(x[0].localeCompare(y[0])) }); }
Die Sortierfunktion von arrayObject.sort(sortFunction) ist also immer noch sehr leistungsfähig und kann endlich die gleiche Funktion wie ORDER BY in SQL-Anweisungen realisieren.
Ich hoffe, dass dieser Artikel für alle hilfreich ist, die sich mit der JavaScript-Programmierung befassen.