utilisez Lodash pour trier le tableau d'objet par valeur

j'essaie de trier un tableau par valeur 'name' (En utilisant Lodash). J'ai utilisé le Lodash docs pour créer la solution ci-dessous .orderBy ne semble pas avoir d'effet. Quelqu'un peut-il nous éclairer sur la bonne façon de trier les tableaux?

Tableau De Caractères

[  
   {  
      "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"
   }
]

Code De Fonction

 var chars = this.state.characters;

 chars = _.orderBy(chars, 'name', 'asc'); // Use Lodash to sort array by 'name'

 this.setState({characters: chars})
30
demandé sur James 2017-04-12 16:33:05

2 réponses

cette méthode orderBy ne pas modifier le tableau d'entrée, vous devez assigner le résultat à votre tableau:

var chars = this.state.characters;

chars = _.orderBy(chars, ['name'],['asc']); // Use Lodash to sort array by 'name'

 this.setState({characters: chars})
52
répondu Artémis Young 2017-04-12 13:42:33

Vous pouvez utiliser lodash sortBy (https://lodash.com/docs/4.17.4#sortBy).

votre code pourrait être comme:

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)
20
répondu Caio Santos 2017-08-07 21:26:35