使用Lodash按值排序对象数组

时间:2017-04-12 13:33:05

标签: arrays lodash

我正在尝试按'name'值对数组进行排序(使用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})

3 个答案:

答案 0 :(得分:105)

此方法orderBy不会更改输入数组, 你必须将结果分配给你的数组:

var chars = this.state.characters;

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

 this.setState({characters: chars})

换句话说,orderBy会更改数组。

答案 1 :(得分:34)

您可以使用lodash sortBy(https://lodash.com/docs/4.17.4#sortBy)。

您的代码可能如下:

wget http://example.com/checkin.php?cpu_temp=48.4

答案 2 :(得分:1)

如果你需要按日期排序,你可以使用这个解决方案:

orderBy(employeePensions, (a) => new Date(a.startDate), ['asc']) // or 'desc'

如果您使用的是 moment 库,则:

orderBy(employeePensions, (a) => moment(a.startDate), 'asc')

附言请注意,lodash 不会以字符串格式对日期进行排序,因此您必须将其转换为 Date 对象。