Comment trier un tableau en fonction de la longueur de chaque élément?
J'ai un tableau comme ceci:
arr = []
arr[0] = "ab"
arr[1] = "abcdefgh"
arr[2] = "abcd"
Après le tri, le tableau de sortie devrait être:
arr[0] = "abcdefgh"
arr[1] = "abcd"
arr[2] = "ab"
Je veux dire, je veux dans l'ordre décroissant de la longueur de chaque élément.
sort
c'est assez simple, où en êtes-vous de la difficulté?- bien de tri par défaut() trie les chaînes alphabeticly, il était à la recherche pour la chaîne.longueur de tri comme on peut le voir dans la réponse choisie 🙂
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
Array.trier
méthode pour trier le tableau. Une fonction de tri qui considère la longueur de la chaîne que les critères de tri peuvent être utilisés comme suit:Remarque: le tri
["a", "b", "c"]
par la longueur de la chaîne n'est pas garanti pour revenir["a", "b", "c"]
. Selon les spécifications:Si l'objectif est de les trier en fonction de la longueur puis par ordre du dictionnaire, vous devez spécifier des critères supplémentaires:
arr.sort((a, b) => b.length - a.length)
return
déclaration.Ici, c'est le tri, en fonction de la longueur d'une chaîne de javascript comme vous avez demandé:
[la solution du problème par la bulle de tri][1]
[1]: http://jsfiddle.net/sssonline2/vcme3/2/
enter code here
Nous pouvons utiliser Tableau.tri méthode pour trier ce tableau.
ES5 solution
JS:
ES6 solution
Attention: pas tous les navigateurs ne peuvent comprendre ES6 code!
Dans l'ES6, nous pouvons utiliser un flèche expressions de fonction.
JS:
Basé sur Salman réponse, j'ai écrit une petite fonction de l'encapsuler:
puis il suffit de l'appeler avec
Noter que malheureusement, les fonctions peuvent/ne devrait pas être ajouté à la Matrice de prototype, comme expliqué sur cette page.
Aussi, il a modifié le tableau passé en paramètre et ne retourne rien. Ce serait forcer la duplication de la matrice et de ne pas être idéal pour les grandes baies. Si quelqu'un a une meilleure idée, merci de faire un commentaire!
J'ai adapté @shareef, la réponse à faire concis. J'utilise,
.sort(function(arg1, arg2) { return arg1.length - arg2.length })
La fonction anonyme que vous passez à trier raconte comment trier le tableau donné.espérons que cette aide.Je sais que c'est confus, mais vous pouvez dire à la fonction de tri à la façon de trier les éléments du tableau par le passage d'une fonction en tant que paramètre de raconter ce qu'il a à faire