Açıkçası o halde sıralamak sonuçları tersine çevirmek için çok daha mantıklı gibi, bu yapmamalıyız, ama sen gerçekten sıralama işlevi içinde ters sırada sıralamak istiyorsanız, böyle bir şey yapabilirdi. .. o çizgi dikkati çekiyor
_.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('');
});
...
... tutarlı bir sıralama düzeni ile ilgili olarak küçük bir çapraz platform sorunu var sıralama yerli javascript daha kurnazca farklı ise compareFunction (a, b) 0'ı döndürür, a ve b'yi birbirine göre değişmeden bırakır, ancak tüm farklı öğelere göre sıralanır. Not: ECMAscript standardı bu davranışı garanti etmez ve dolayısıyla tüm tarayıcılara (ör. En azından 2003'e dayanan Mozilla sürümleri) bunlara uymaz. Array.prototype.sort()
alt çizgi en .sortBy
belgelerine durumları:
bir (kararlı bir şekilde) listenin kopyasını sıralanmış döndürür. yerine sırayla öğeleri tutmak için 0
dönme tarafından yapar _.sortBy
, sol tarafta dizinini eksi sağ tarafında dizinini döndürür.
_.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');
};
Nihayetinde diziyi normal olarak sıralamak daha hızlı olabilir ve sonra 'reverse()' yi çağırın! –
Sıralama ve sonra tersine çevirme, diğer seçeneklerden çok daha okunabilir olacaktır. –