In diesem Beispiel werden Arrays nach Zahlen (und Datumsangaben) oder Strings sortiert.
Array.prototype.deepsort= function(){
var i, order= arguments, L= order.length, tem;
return this.sort(function(a, b){
i= 0;
while(i < L){
tem= order[i++];
var ao= a[tem] || 0, bo= b[tem] || 0;
if(ao== bo) continue;
return ao> bo? 1: -1;
}
return 0;
});
}
var a= [ [ 'z', 1, 0 ], [ 'a', 0, 1 ],['m',-1,10] ,['a','1',-1]];
alert(a.deepsort(0,1,2)+'\n\n'+a.deepsort(2,0,1))
Sortiert nach dem ausgewählten Index (übergeben als Argument).
Wenn die Elemente in diesem Index in jedem Array übereinstimmen, sortiert den nächsten als Argument übergebenen Index, falls vorhanden.
Weiter so lange die Elemente übereinstimmen und es gibt mehr Argumente.
Sie müssen hier nicht mehr als einen Index angeben zu sortieren, indem
a.deepsort(0);
a.deepsort(2);
+1 Ich weiß, das ist ein alter Beitrag, aber es ist eine tolle Antwort und es hat mir geholfen, ein Problem mit meinem eigenen benutzerdefinierten Tabellensortier-Plugin zu knacken :) – defaultNINJA