Ovviamente non si dovrebbe fare, in quanto rende molto più senso per ordinare, poi invertire i risultati, ma se si vuole veramente per ordinare in ordine inverso all'interno della funzione di ordinamento, si potrebbe fare qualcosa di simile. ..
_.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('');
});
... anche la pena notare che la sottolineatura è leggermente diverso da quello javascript nativo specie che ha un piccolo problema cross-platform per quanto riguarda un sistema di classificazione coerente ...
Se compareFunction (a, b) restituisce 0, lascia aeb invariato l'uno rispetto all'altro, ma ordinato rispetto a tutti gli elementi diversi. Nota: lo standard ECMAscript non garantisce questo comportamento, quindi non tutti i browser (ad esempio versioni di Mozilla risalenti almeno al 2003) lo rispettano. Array.prototype.sort()
.sortBy
documentazione afferma di sottolineatura:
Restituisce un (stabilmente) In ordine copia della lista. _.sortBy
cosa che fa da invece di tornare 0
per mantenere gli articoli in ordine, restituisce l'indice del lato sinistro meno l'indice del lato destro.
_.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');
};
Ti rendi conto che alla fine potrebbe essere solo più veloce ordinare l'array normalmente, quindi chiamare 'reverse()'? –
Anche l'ordinamento e l'inversione sono molto più leggibili rispetto ad altre opzioni. –