2017-06-14 4 views

Répondre

3

Vous pouvez d'abord trier par longueur, puis utiliser localeCompare() pour trier par ordre alphabétique.

var array = ["a", "aaa", "bb", "bbb", "c"]; 
 
array.sort(function(a, b) { 
 
    return a.length - b.length || a.localeCompare(b) 
 
}) 
 

 
console.log(array)

+0

Merci à tous. Ce code fonctionne totalement pour moi! –

+0

De rien. –

+0

Comment puis-je faire cela en PHP? – TricksfortheWeb

1

Trier par longueur d'abord, puis par ordre alphabétique sur || opérateur pour plus d'un critère. Cependant, dans votre cas, un tri simple fera l'affaire.

var array = ["a", "aaa", "bb", "bbb", "c"]; 
 

 
array.sort(function(a, b) { 
 
    return a.length - b.length || a.localeCompare(b); 
 
}); 
 

 
console.log(array);

Ou

var array =["c", "aa", "bb", "bbb", "b", "aaa", "a"]; 
 

 
array.sort(function(a, b) { 
 
    return a.length - b.length || [a,b].sort()[0]===b; 
 
}); 
 

 
console.log(array);

+0

Juste un tête à propos de tri, il change le tableau source de sorte que vous n'avez pas besoin de l'assigner à une nouvelle variable. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort?v=control –

+0

Si vous ne souhaitez pas modifier le tableau d'origine, vous pouvez d'abord faire une copie ce https://stackoverflow.com/questions/9592740/comment-pouvez-vous-sort-an-array-sans-mutater-le-original-array –

+0

@jasonSperske bon point force d'habitude. – Rick