Comment trier array dans javascript?

var arr = []; arr.push(row1); arr.push(row2); ... arr.push(rown); 

Comment trier par row['key'] ?

Une matrice JavaScript a une méthode de sort() intégrée. Dans ce cas, quelque chose comme le suivant fonctionnerait:

 arr.sort( function(row1, row2) { var k1 = row1["key"], k2 = row2["key"]; return (k1 > k2) ? 1 : ( (k2 > k1) ? -1 : 0 ); } ); 

Vous appelez la fonction de tri d'un tableau avec votre comparateur. Un comparateur JavaScript est juste une fonction qui retourne -1, 0 ou 1 selon que a soit inférieur a b, a est égal à b ou a est supérieur à b:

 myarray.sort(function(a,b){ if(a < b){ return -1; } else if(a == b){ return 0; } else { // a > b return 1; } }); 

Ce n'est qu'un exemple, votre fonction peut baser la comparaison sur ce que vous voulez, mais elle doit retourner -1,0,1.

J'espère que cela t'aides.

Voici un ensemble de fonctions si vous souhaitez trier, en descendant ou trier sur plusieurs colonnes dans un tableau.

 var cmp = function(x, y){ return x > y? 1 : x < y ? -1 : 0; }, arr = [{a:0,b:0},{a:2,b:1},{a:1,b:2},{a:2, b:2}]; // sort on column a ascending arr.sort(function(x, y){ return cmp( cmp(xa, ya), cmp(ya, xa) ); }); // sort on column a descending arr.sort(function(x, y){ return cmp( -cmp(xa, ya), -cmp(ya, xa) ); }); // sort on columns a ascending and b descending arr.sort(function(x, y){ return cmp([cmp(xa, ya), -cmp(xb, yb)], [cmp(ya, xa), -cmp(yb,xb)]); }); 

Pour obtenir un tri ascendant, utilisez "cmp (…)", et pour obtenir un ordre descendant, utilisez "-cmp (…)"

Et pour trier sur plusieurs colonnes, comparez deux tableaux de cmp (…)

Considérez le code suivant:

 var arr = new Array(); for(var i = 0; i < 10; ++i) { var nestedArray = [ "test", Math.random() ]; arr.push(nestedArray); } function sortBySecondField(a, b) { var aRandom = a[1]; var bRandom = b[1]; return ((aRandom < bRandom) ? -1 : ((aRandom > bRandom) ? 1 : 0)); } arr.sort(sortBySecondField); alert(arr); 

Maintenant, modifiez simplement une fonction sortBySecondField pour comparer a['key'] au lieu de a[1] et faites de même pour b .