Estoy tratando de ordenar una matriz por valor de 'nombre' (usando Lodash). Utilicé los documentos de Lodash para crear la solución a continuación, sin embargo .orderBy no parece tener ningún efecto en absoluto. ¿Alguien puede arrojar algo de luz sobre la forma correcta de ordenar la matriz?
Matriz de caracteres
[
{
"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 función
var chars = this.state.characters;
_.orderBy(chars, 'name', 'asc'); // Use Lodash to sort array by 'name'
this.setState({characters: chars})
'name', 'asc'
orderBy
no cambia la matriz de entrada" ... "orderBy
cambia la matriz en su lugar". La redacción prevista es probablemente "fuera de lugar" o "fuera de lugar". Ver: en.wikipedia.org/wiki/In-place_algorithm['asc']
no ordena ascendente, para lograr eso la forma sería agregar unreverse()
después delorderBy
(al menos en la versión 4.17.15)Puede usar lodash sortBy ( https://lodash.com/docs/4.17.4#sortBy ).
Tu código podría ser como:
fuente
_.sortBy(myArray, 'name')
orderBy
, no se puede pasar el tipo de clasificaciónsortBy
, siempre se clasifica en orden ascendente.