Es obvio que no debe hacer esto, ya que hace mucho más sentido para ordenar, y luego revertir los resultados, pero si realmente desea ordenar en orden inverso dentro de la función de clasificación, que podría hacer algo como esto. ..
_.sortBy(["Bob", "Mary", "Alice"], function (a) {
// split each string into single characters
// ... then swap for inverse character from unicode range
// ... and glue the characters back together into an inversely sortable string
return _.map(a.split(''), function(i){
return String.fromCharCode(65536 - i.charCodeAt(0));
}).join('');
});
... también vale la pena señalar que subrayado es sutilmente diferente de JavaScript nativo especie que tiene un pequeño problema multiplataforma con respecto a un orden coherente ...
Si compareFunction (a, b) devuelve 0, deja a a y b sin cambios el uno con respecto al otro, pero ordenado con respecto a todos los elementos diferentes. Nota: el estándar ECMAscript no garantiza este comportamiento, por lo que no todos los navegadores (por ejemplo, versiones de Mozilla que datan de al menos 2003) lo respetan. Array.prototype.sort()
estados .sortBy
documentación de Guión:
Devuelve una (de forma estable) ordenados copia de la lista. _.sortBy
¿Qué lo hace por lugar de devolver 0
para mantener los elementos en orden, devuelve el índice del lado izquierdo menos el índice de la mano derecha.
_.sortBy = function(obj, iteratee, context) {
iteratee = cb(iteratee, context);
return _.pluck(_.map(obj, function(value, index, list) {
return {
value: value,
index: index,
criteria: iteratee(value, index, list)
};
}).sort(function(left, right) {
var a = left.criteria;
var b = right.criteria;
if (a !== b) {
if (a > b || a === void 0) return 1;
if (a < b || b === void 0) return -1;
}
return left.index - right.index;
}), 'value');
};
Te das cuenta de que, en última instancia, podría ser más rápido ordenar la matriz normalmente, y luego llamar a 'reverse()'? –
Ordenar y luego invertir también sería mucho más legible que otras opciones. –