web-dev-qa-db-ja.com

Lodashを使用して、値でオブジェクトの配列をソートします

「名前」の値で配列をソートしようとしています(Lodashを使用)。 Lodashのドキュメントを使用して以下のソリューションを作成しましたが、.orderByはまったく影響を与えていないようです。配列を並べ替える正しい方法に光を当てることはできますか?

文字配列

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

機能コード

 var chars = this.state.characters;

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

 this.setState({characters: chars})
57
James

このメソッドorderByは入力配列を変更しません。結果を配列に割り当てる必要があります:

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

Lodash sortBy( https://lodash.com/docs/4.17.4#sortBy )を使用できます。

コードは次のようになります。

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