Há um método bacana para classificar uma matriz de objetos com base em várias propriedades:
var data = _.sortBy(array_of_objects, ['type', 'name']);
No entanto, isso é apenas para classificação crescente. Existe alguma maneira útil de definir a direção por coluna? Por exemplo
var data = _.sortBy(array_of_objects, [{'type': 'asc'}, {'name': 'desc'}]);
javascript
sorting
lodash
nhaa123
fonte
fonte
_.sortByOrder is not a function
na versão mais recente do lodash., ['asc', 'desc']
parte está sendo ignorada por [email protected]. Tudo é ordenado ascendente._.sortBy
. Tente em_.orderBy
vez disso. Espero que isto ajude.Você sempre pode usar
Array.prototype.reverse()
fonte
Vale a pena notar que, se você deseja classificar propriedades particulares como descendentes, não deseja simplesmente anexar .reverse () no final, pois isso fará com que todos os tipos descendam.
Para fazer classificações particulares decrescentes, encadeie as classificações menos significativas para as mais significativas, chamando .reverse () após cada classificação que você deseja que seja decrescente.
Como a classificação de _ é uma classificação estável, você pode encadear e reverter com segurança, porque se dois itens tiverem o mesmo valor para uma propriedade, sua ordem será preservada.
Mais Informações
fonte
Campo profundo e campo múltiplo e ordem de direção diferente Lodash> 4
fonte
Não. Você não pode especificar a ordem de classificação que não seja por uma função de retorno de chamada que inverta o valor. Nem isso é possível para uma classificação de várias colunas.
Você pode fazer
Para todo o resto, você precisará recorrer ao nativo
.sort()
com uma função de comparação personalizada:fonte
Na documentação da versão 4.11.x, diz: `" Este método é como _.sortBy, exceto que permite especificar as ordens de classificação dos iterados para classificar. Se as ordens não forem especificadas, todos os valores serão classificados em ordem crescente. Caso contrário, , especifique uma ordem de "desc" para decrescente ou "asc" para ordem de classificação crescente dos valores correspondentes ". (fonte https://lodash.com/docs/4.17.10#orderBy )
let sorted = _.orderBy(this.items, ['fieldFoo', 'fieldBar'], ['asc', 'desc'])
fonte
_.sortByOrder
?Você também pode tentar isso:
fonte