Estou tentando classificar uma matriz por valor de 'nome' (usando Lodash). Usei os documentos Lodash para criar a solução abaixo, no entanto .orderBy não parece ter nenhum efeito. Alguém pode lançar alguma luz sobre a maneira correta de ordenar a matriz?
Matriz de Chars
[
{
"id":25,
"name":"Anakin Skywalker",
"createdAt":"2017-04-12T12:48:55.000Z",
"updatedAt":"2017-04-12T12:48:55.000Z"
},
{
"id":1,
"name":"Luke Skywalker",
"createdAt":"2017-04-12T11:25:03.000Z",
"updatedAt":"2017-04-12T11:25:03.000Z"
}
]
Código de Função
var chars = this.state.characters;
_.orderBy(chars, 'name', 'asc'); // Use Lodash to sort array by 'name'
this.setState({characters: chars})
'name', 'asc'
orderBy
não altera a matriz de entrada" ... "orderBy
altera a matriz no local." O texto pretendido provavelmente é "não no local" ou "fora do lugar". Veja: en.wikipedia.org/wiki/In-place_algorithm['asc']
não ordena de forma ascendente, para isso o jeito seria adicionar areverse()
apósorderBy
(pelo menos na versão 4.17.15)Você pode usar lodash sortBy ( https://lodash.com/docs/4.17.4#sortBy ).
Seu código pode ser assim:
fonte
_.sortBy(myArray, 'name')
orderBy
, você não pode passar o tipo de classificaçãosortBy
, ele sempre classifica em ordem crescente.