Подтвердить что ты не робот

Используйте Lodash для сортировки массива объекта по значению

Я пытаюсь сортировать массив по значению 'name' (используя Lodash). Я использовал документы Lodash для создания решения ниже, однако .orderBy, похоже, вообще не влияет. Может ли кто-нибудь пролить свет на правильный способ сортировки массива?

Chars Array

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

Ответ 1

Этот метод orderBy не меняет входной массив, Вы должны присвоить результат вашему массиву:

var chars = this.state.characters;

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

 this.setState({characters: chars})

Ответ 2

Вы можете использовать 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)