Como posso fazer um asc e desc classificar usando underscore.js?

Atualmente estou usando underscorejs para classificar minha sorting json. Agora eu pedi para fazer uma sorting ascending e descending usando o underscore.js. Eu não vejo nada sobre o mesmo na documentação. Como posso conseguir isso?

Você pode usar o .sortBy , ele sempre retornará uma lista crescente :

 _.sortBy([2, 3, 1], function(num) { return num; }); // [1, 2, 3] 

Mas você pode usar o método .reverse para descer :

 var array = _.sortBy([2, 3, 1], function(num) { return num; }); console.log(array); // [1, 2, 3] console.log(array.reverse()); // [3, 2, 1] 

Ou quando estiver lidando com números, adicione um sinal negativo ao retorno para descer a lista:

 _.sortBy([-3, -2, 2, 3, 1, 0, -1], function(num) { return -num; }); // [3, 2, 1, 0, -1, -2, -3] 

Sob o .sortBy usa o construído em .sort([handler]) :

 // Default is ascending: [2, 3, 1].sort(); // [1, 2, 3] // But can be descending if you provide a sort handler: [2, 3, 1].sort(function(a, b) { // a = current item in array // b = next item in array return b - a; }); 

Ordem decrescente usando sublinhado pode ser feita multiplicando o valor de retorno por -1.

 //Ascending Order: _.sortBy([2, 3, 1], function(num){ return num; }); // [1, 2, 3] //Descending Order: _.sortBy([2, 3, 1], function(num){ return num * -1; }); // [3, 2, 1] 

Se você estiver classificando por strings e não por números, poderá usar o método charCodeAt () para obter o valor unicode.

 //Descending Order Strings: _.sortBy(['a', 'b', 'c'], function(s){ return s.charCodeAt() * -1; }); 

O método reverso do protótipo do Array modifica o array e retorna uma referência para ele, o que significa que você pode fazer isso:

 var sortedAsc = _.sortBy(collection, 'propertyName'); var sortedDesc = _.sortBy(collection, 'propertyName').reverse(); 

Além disso, a documentação de sublinhado lê:

Além disso, os methods do protótipo Array são intermediados por proxy através do object Underscore encadeado, para que você possa deslizar um reverse ou um push para sua cadeia e continuar a modificar o array.

o que significa que você também pode usar .reverse() durante o encadeamento:

 var sortedDescAndFiltered = _.chain(collection) .sortBy('propertyName') .reverse() .filter(_.property('isGood')) .value(); 

Similar à biblioteca Underscore, existe outra biblioteca chamada ‘lodash’ que tem um método “orderBy” que aceita o parâmetro para determinar em que ordem classificá-lo. Você pode usar como

 _.orderBy('collection', 'propertyName', 'desc') 

Por algum motivo, não está documentado nos documentos do website.