按照Lodash 2.x中的多个字段排序

Mik*_*378 4 javascript sorting lodash

假设这个数组:

var members = [
  {firstName: 'Michael', weight: 2}, 
  {firstName: 'Thierry', weight: 1}, 
  {firstName: 'Steph', weight: 3},
  {firstName: 'Jordan', weight: 3}, 
  {firstName: 'John', weight: 2}
];
Run Code Online (Sandbox Code Playgroud)

我想按重量和每种重量排序,按firstNames排序(嵌套排序).

结果将是:

[
  {firstName: 'Thierry', weight: 1}, 
  {firstName: 'John', weight: 2}, 
  {firstName: 'Michael', weight: 2}, 
  {firstName: 'Jordan', weight: 3}, 
  {firstName: 'Steph', weight: 3}
];
Run Code Online (Sandbox Code Playgroud)

我使用Lodash 2.4.1 快速实现了这一点:

return _.chain(members)
    .groupBy('weight')
    .pairs()
    .sortBy(function(e) {
        return e[0];
    })
    .map(function(e){
        return e[1];
    })
    .map(function(e){
        return _.sortBy(e, 'firstName')
    })
    .flatten()
    .value();
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来使用Lodash 2.4.1实现它?

flo*_*bon 6

你可以链接两种:

_(members).sortBy('firstName').sortBy('weight').value()
Run Code Online (Sandbox Code Playgroud)