À l'aide de Javascript avec Underscore.js pour Trier l'autre sens
Je suis à l'aide de Javascript sort
(avec Underscore.js):
_.sortBy(["Bob", "Mary", "Alice"], function (name) {return name})
> ["Alice", "Bob", "Mary"]
Je voudrais le tableau à retourner dans l'autre sens. Comment dois-je faire?
["Marie", "Bob", "Alice"]
Je ne veux pas inverser après c'est triée - je veux qu'il soit créé de l'autre manière autour de la première fois.
Grâce.
- Vous vous rendez compte que, finalement, c'est peut-être plus rapide pour trier le tableau normalement, et ensuite appeler
reverse()
? - Tri puis inverser serait également beaucoup plus lisible que les autres options.
Vous devez vous connecter pour publier un commentaire.
Je voudrais juste faire ce trait de Soulignement sous le capot: utiliser le Tableau#tri méthode.
Ou si vous ne voulez pas que le tableau d'origine modifié, le clone d'abord:
Au lieu de les jeter underscorejs loin, je serais plutôt de l'utiliser conjointement avec
Array.inverse
d'utiliser le meilleur des deux..reverse()
appel ajoute un autre cycle dans le tableau. C'est donc en fait de moins en moins efficace que de simplement le tri dans le sens inverse que Felix a suggéré._.sortBy(["Bob", "Mary", "Alice"], function (name) {return name})
2ème itération.reverse()
Mieux à gérer au sein de l'_sortBy
Évidemment, vous ne devriez pas faire cela, car il est plus raisonnable de les trier, puis d'inverser les résultats, mais si vous voulez vraiment pour trier dans l'ordre inverse à l'intérieur de la fonction de tri, vous pourriez faire quelque chose comme ça...
... également intéressant de noter que le trait de soulignement est subtilement différent de javascript natif de tri qui a une petite croix plate-forme de problème au sujet de l'uniforme de l'ordre de tri...
Trait de soulignement est
.sortBy
états de documentation:En au lieu de retourner
0
pour conserver les éléments dans l'ordre, il renvoie l'index de la gauche, moins l'index de la droite.Vous pouvez le faire avec un 1 liner dans l'ES6, il suffit de changer le
>
selon la direction que vous souhaitez..sort()
est pris en charge depuis IE6 et vous venez de passer une fonction qui retourne 1 ou -1;