Actualmente estoy usando underscorejs para ordenar mi ordenación json. Ahora he pedido hacer ascending
y descending
ordenar usando underscore.js. No veo nada relacionado con lo mismo en la documentación. ¿Cómo puedo conseguir esto?
javascript
underscore.js
Rahul
fuente
fuente
sortBy
función puede serreturn -n
pero eso no funcionará para las cadenas; de ahí la pregunta sobre qué tipo de cosas estás ordenando._.sortBy([1,4,3,2]).reverse()
o_.chain([1,4,3,2]).sortBy().reverse().value()
si no quieres usar elreverse()
prototipo de Array.Respuestas:
Puede usar
.sortBy
, siempre devolverá una lista ascendente :Pero puedes usar el método .reverse para que descienda :
O cuando se trata de números, agregue un signo negativo al retorno para descender la lista:
Debajo del capó se
.sortBy
utiliza el incorporado.sort([handler])
:fuente
.sortBy()
llama a las funciones integradasArray.sort()
, cuyo algoritmo depende de los proveedores de navegadores, pero es muy poco probable que el tipo de burbuja sea su elección._.sortBy(arr, function)
, supongo que recorre cada elemento y ejecuta cierta lógica para devolver la matriz ordenada. Luego, cuando lo llameArray.prototype.reverse()
, probablemente repita cada elemento nuevamente y ejecute algo de lógica para devolver la matriz invertida. Por lo tanto, está repitiendo la matriz dos veces.El orden descendente con guión bajo se puede hacer multiplicando el valor de retorno por -1.
Si está ordenando por cadenas, no por números, puede usar el método charCodeAt () para obtener el valor Unicode.
fuente
El método inverso del prototipo de matriz modifica la matriz y le devuelve una referencia, lo que significa que puede hacer esto:
Además, la documentación de subrayado dice:
lo que significa que también puedes usar
.reverse()
mientras encadenas:fuente
_.sortBy(collection, item => item. propertyName.toLowerCase());
De manera similar a la biblioteca Underscore, hay otra biblioteca llamada 'lodash' que tiene un método "orderBy" que toma el parámetro para determinar en qué orden ordenarlo. Puedes usarlo como
Por alguna razón, no está documentado en los documentos del sitio web.
fuente
orderBy
, super útil! Mucho mejor que usar reverse, ya que conserva la propiedad de ordenación estable que estoy buscando.Subrayar mixins
Ampliando la respuesta de @ emil_lundberg, también puede escribir un "mixin" si está usando Underscore para hacer una función personalizada para ordenar si es un tipo de clasificación que podría repetir en una aplicación en alguna parte.
Por ejemplo, tal vez tenga un controlador o vea los resultados de clasificación con el orden de clasificación "ASC" o "DESC", y desee alternar entre ese tipo, podría hacer algo como esto:
Mixin.js
Ejemplo de uso
Aquí hay un JSFiddle que demuestra esto: JSFiddle para SortBy Mixin
fuente