「名前」の値で配列をソートしようとしています(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})
このメソッドorderBy
は入力配列を変更しません。結果を配列に割り当てる必要があります:
var chars = this.state.characters;
chars = _.orderBy(chars, ['name'],['asc']); // Use Lodash to sort array by 'name'
this.setState({characters: chars})
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)