Il existe une méthode astucieuse pour trier un tableau d'objets en fonction de plusieurs propriétés:
var data = _.sortBy(array_of_objects, ['type', 'name']);
Cependant, ce n'est que pour le tri croissant. Existe-t-il un moyen pratique de définir la direction par colonne? Par exemple
var data = _.sortBy(array_of_objects, [{'type': 'asc'}, {'name': 'desc'}]);
javascript
sorting
lodash
nhaa123
la source
la source
_.sortByOrder is not a function
dernière version de lodash., ['asc', 'desc']
partie est simplement ignorée pour moi avec [email protected]. Tout est simplement trié par ordre croissant._.sortBy
. Essayez à la_.orderBy
place. J'espère que cela t'aides.Vous pouvez toujours utiliser
Array.prototype.reverse()
la source
Il est intéressant de noter que si vous voulez trier des propriétés particulières par ordre décroissant, vous ne voulez pas simplement ajouter .reverse () à la fin, car cela rendra tous les types descendants.
Pour faire des tris particuliers décroissants, enchaînez vos tris du moins significatif au plus significatif, en appelant .reverse () après chaque tri que vous souhaitez décroissant.
Le tri de _ étant un tri stable, vous pouvez enchaîner et inverser les tris en toute sécurité, car si deux éléments ont la même valeur pour une propriété, leur ordre est conservé.
Plus d'information
la source
Commande de champ profond et multi-champ et direction différente Lodash> 4
la source
Non. Vous ne pouvez pas spécifier l'ordre de tri autrement que par une fonction de rappel qui inverse la valeur. Même cela n'est pas possible pour un tri à plusieurs colonnes.
Vous pourrez peut-être faire
Pour tout le reste, vous devrez recourir au natif
.sort()
avec une fonction de comparaison personnalisée:la source
Dans la documentation de la version 4.11.x, il est dit: `` Cette méthode ressemble à _.sortBy sauf qu'elle permet de spécifier les ordres de tri des itérés à trier. Si les commandes ne sont pas spécifiées, toutes les valeurs sont triées par ordre croissant. Sinon , spécifiez un ordre de "desc" pour décroissant ou "asc" pour l'ordre de tri croissant des valeurs correspondantes. " (source https://lodash.com/docs/4.17.10#orderBy )
let sorted = _.orderBy(this.items, ['fieldFoo', 'fieldBar'], ['asc', 'desc'])
la source
_.sortByOrder
?Vous pouvez également essayer ceci:
la source