Estoy tratando de ordenar una matriz por valor de 'nombre' (usando Lodash). Usé los documentos de Lodash para crear la solución a continuación, sin embargo, .orderBy no parece tener ningún efecto. ¿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})Este método orderBy no cambia la matriz de entrada, debe asignar el resultado a su matriz:
var chars = this.state.characters; chars = _.orderBy(chars, ['name'],['asc']); // Use Lodash to sort array by 'name' this.setState({characters: chars})Puede usar lodash sortBy ( https://lodash.com/docs/4.17.4#sortBy ).
Su código podría ser como:
const myArray = [ { "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" } ] const myOrderedArray = _.sortBy(myArray, o => o.name)Si necesita ordenar por fecha, puede usar esta solución:
orderBy(items, (a) => new Date(a.createdAt), ['asc']) // or 'desc' Si está utilizando la biblioteca de moment , entonces:
orderBy(items, (a) => moment(a.createdAt), 'asc') Ps Tenga en cuenta que el lodash no ordena las fechas en formato de cadena, por lo que debe convertirlo en un objeto Fecha.