Hay un método ingenioso para ordenar una matriz de objetos en función de varias propiedades:
var data = _.sortBy(array_of_objects, ['type', 'name']);
Sin embargo, eso es solo para la clasificación ascendente. ¿Hay alguna forma práctica de definir la dirección por columna? P.ej
var data = _.sortBy(array_of_objects, [{'type': 'asc'}, {'name': 'desc'}]);
javascript
sorting
lodash
nhaa123
fuente
fuente
_.sortByOrder is not a function
última versión de lodash., ['asc', 'desc']
parte simplemente me está ignorando con [email protected]. Todo está ordenado de forma ascendente._.sortBy
. Intenta en su_.orderBy
lugar. Espero que esto ayude.Siempre puedes usar
Array.prototype.reverse()
fuente
Vale la pena señalar que si desea ordenar propiedades particulares descendentes, no desea simplemente agregar .reverse () al final, ya que esto hará que todos los tipos desciendan.
Para hacer que las clases particulares desciendan, encadene sus clases de menos significativo a más significativo, llamando a .reverse () después de cada tipo que desee que descienda.
Dado que la ordenación _ es una ordenación estable, puede encadenar e invertir de manera segura porque si dos elementos tienen el mismo valor para una propiedad, se conserva su orden.
Más información
fuente
Ordenes de campo profundo y campo múltiple y dirección diferente Lodash> 4
fuente
No. No puede especificar el orden de clasificación que no sea mediante una función de devolución de llamada que invierte el valor. Ni siquiera esto es posible para una clasificación de varias columnas.
Tal vez puedas hacer
Para todo lo demás, deberá recurrir al nativo
.sort()
con una función de comparación personalizada:fuente
En la documentación de la versión 4.11.x, dice: `" Este método es como _.sortBy, excepto que permite especificar el orden de los iterados para ordenar. Si los pedidos no se especifican, todos los valores se ordenan en orden ascendente. De lo contrario , especifique un orden de "desc" para descendente o "asc" para el orden de clasificación ascendente de los valores correspondientes ". (fuente https://lodash.com/docs/4.17.10#orderBy )
let sorted = _.orderBy(this.items, ['fieldFoo', 'fieldBar'], ['asc', 'desc'])
fuente
_.sortByOrder
?También puedes probar esto:
fuente