Cet exemple permet de trier des tableaux par des nombres (et des dates) ou des chaînes.
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))
Trie sur l'index sélectionné (transmis en tant qu'argument).
Si les éléments de cet index dans chaque tableau correspondent, trie sur l'index suivant passé en argument, le cas échéant.
Continuez aussi longtemps que les éléments correspondent et qu'il y a plus d'arguments.
Vous n'avez pas besoin de spécifier plus d'un index pour trier par
a.deepsort(0);
a.deepsort(2);
+1 Je sais que c'est un vieux post mais c'est une réponse géniale et ça m'a aidé à résoudre un problème avec mon propre plugin de tri de table personnalisé que je fais :) – defaultNINJA