Die Methode Array.prototype.sort dient zum Sortieren des Arrays. Diese Methode verwendet einen Funktionsparameter, um die Sortierregel anzugeben
:
var arr=[2,1,3,4];
alarm(arr.sort()) // [1,2,3,4] Von klein nach groß anordnen
// Jetzt von groß nach klein anordnen, um [4,3,2,1] zu erhalten
Alert(arr.sort(function(left,right){return left>right?-1:1}))
//Hier verwendet die Sortiermethode den Rückgabewert 1 oder -1 der Parameterfunktion, um zu entscheiden, ob sortiert werden soll Reihenfolge oder in umgekehrter Reihenfolge
. Erinnern Sie sich daran, was ich Ihnen zuvor über die Verwendung der Function.apply-Methode gesagt habe, um das größte Element in einem Array zu erhalten?
Der Artikel verwendet zwei verschiedene Methoden, um den Maximalwert in einem Array zu ermitteln.
Jetzt kann auch sortieren
var arr=[2,1,3,4];
var minValue=arr.sort()[0];
var maxValue=arr.sort()[arr.length-1] // Wie wäre es mit arr.sort().pop()
? Dies ist auch eine alternative Implementierungsmethode. Es ist nicht erforderlich, einen Schleifendurchlauf zu schreiben.
Ich muss jedoch darauf hinweisen, dass diese Methode am wenigsten effizient ist. Sie können diese Technik immer noch für Arrays mit Dutzenden oder Hunderten von Elementen verwenden.
Wenn das Array jedoch sehr groß ist, kann die Verwendung der Methode sort() so langsam sein, dass Sie Lust darauf bekommen,
komplexe Datenstrukturen zu sortieren.
1. Sortieren mehrdimensionaler Arrays
var arr=[
[2,1,55,4],
[5,3,22,3],
[1,2,77,2],
[9,4,33,5],
];
Alert("Standardmäßig nach erster Spalte sortiertn"+arr.sort().join("n"))
Alert("Jetzt nach der dritten Spalte sortierenn"+arr.sort(function(left,right){return left[2]>right[2]?1:-1}).join("n"))
Alert("Jetzt in umgekehrter Reihenfolge nach der dritten Spalte sortierenn"+arr.sort(function(left,right){return left[2]>right[2]?-1:1}).join("n ") )
2. Sortieren Sie komplexe Datenstrukturen
Array.prototype.each=function(f){for(var i=0;i<this.length;i++) f(this[i],i,this)}
function showName(item){alert(item.name)}; //Name drucken
var arr=[
{name:"bill",money:500},
{name:"go_rush",money:400},
{name:"dudu",money:9000}
];
//Zeige dudu, bill, go_rush der Reihe nach an. Es scheint, dass Dudu der Reichste und ich der Ärmste bin.
arr.sort(function(left,right){return left.money>right.money?-1:1}).each(showName)
3. Sortieren der Tabelle, ich habe gestern mit allen über dieses Thema gesprochen.
Siehe auch:
http://www.cnblogs.com/ashun/archive/2006/11/30/appendChild_table_sort.html
Komplexere Tabellensortierung (auch unter Verwendung der Sortierfunktion von Array):
http://community.csdn.net/expert/Topicview2.asp?id=5174915
4. Es gibt eine sehr clevere Erweiterung zum Sortieren in Protype.js. Schauen wir uns zunächst den Code an:
1 sortBy: function(iterator) {
2 return this.collect(function(value, index) {
3 return {Wert: Wert, Kriterien: Iterator(Wert, Index)};
4 }).sort(function(left, right) {
5 var a = left.criteria, b = right.criteria;
6 return a < b ? -1 : a > b ?
7 }).pluck('value');
8},
Mit sortBy können Sie eine Funktion übergeben, die Funktion mit jedem Element des Arrays als Parameter ausführen und schließlich die von der Funktion zurückgegebenen Ergebnisse sortieren.
Lassen Sie mich seine Funktion im Folgenden aufschlüsseln.
Die Sammelmethode ist eigentlich die Kartenmethode
Array.prototype.map=function(f){
for(var i=0;ret=[];i<this.length;i++) ret[i]=f(this[i],i,this)
Rückkehr ret
}
Zum Beispiel jetzt
arr=[2,1,4,3]
iterator=function(x){return x*x}
Sie können ein solches Array in 1-3 Codezeilen erhalten
[
{Wert:2,Kriterien:4},
{Wert:1,Kriterien:1},
{Wert:4,Kriterien:16},
{Wert:3,Kriterien:9}
]
4-6 Codezeilen sortieren das Array nach Kriterien: von klein nach groß. Nach dem Sortieren erhalten wir
[
{Wert:1,Kriterien:1},
{Wert:2,Kriterien:4},
{Wert:3,Kriterien:9},
{Wert:4,Kriterien:16}
]
Zeile 7 des Codes ist die einfachste. Sie nimmt das Wertattribut jedes Elements und ruft schließlich [1,2,3,4] ab, um sortBy(function...) zum Sortieren von arr zu implementieren.
Vielleicht sind meine sprachlichen Ausdrucksfähigkeiten begrenzt, wenn ich in „prototype.js“ über „sortBy“ spreche, weiß ich einfach nicht, wie ich es in Worten ausdrücken soll.
Es tut mir wirklich leid, dass jeder so hart arbeiten muss, um den Erklärungscode zu lesen, den ich geschrieben habe:
http://www.cnblogs.com/ashun/archive/2006/12/01/sort_sortby_array_prototype.html