2017-04-12 10 views
13

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

文字数アレイ

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

答えて

18

入力配列、 あなたの配列に結果を割り当てる必要が変更されませんorderByこの方法:

var chars = this.state.characters; 

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

this.setState({characters: chars}) 
+1

総手のひらを顔に当てる瞬間!ありがとう男 – James

+0

あなたは歓迎です、検証することを忘れないでください:) –

+0

hmmm、まだ配列をソートしていないようです。もし私が質問を更新するか新しいものを作るべきかわからない場合 – James

10

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) 
+0

また、省略形を使用することもできます: '_.sortBy(myArray、 'name')' – Don

関連する問題