web-dev-qa-db-fra.com

utilisez Lodash pour trier un tableau d'objets par valeur

J'essaye de trier un tableau par la valeur 'name' (en utilisant Lodash). J'ai utilisé les documents Lodash pour créer la solution ci-dessous, cependant .orderBy ne semble pas avoir d'incidence du tout. Quelqu'un peut-il nous éclairer sur la bonne façon de trier un tableau?

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})
57
James

Cette méthode orderBy ne modifie pas le tableau en entrée, vous devez affecter 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})
121
Artémis Young

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)
38
Caio Santos