使用lodash按多个字段对数组中的项进行排序

时间:2013-10-11 08:01:25

标签: javascript underscore.js lodash

如何使用lodash通过多个字段对对象数组进行排序。所以对于像这样的数组:

[
  {a: 'a', b: 2},
  {a: 'a', b: 1},
  {a: 'b', b: 5},
  {a: 'a', b: 3},
]

我希望这个结果

[
  {a: 'a', b: 1},
  {a: 'a', b: 2},
  {a: 'a', b: 3},
  {a: 'b', b: 5},
]

1 个答案:

答案 0 :(得分:34)

在当前版本的lodash(2.4.1)中这更容易。你可以这样做:

var data = [
    {a: 'a', b: 2},
    {a: 'a', b: 1},
    {a: 'b', b: 5},
    {a: 'a', b: 3},
];

data = _.sortBy(data, ["a", "b"]);  //key point: Passing in an array of key names

_.map(data, function(element) {console.log(element.a + " " + element.b);});

它会将此输出到控制台:

"a 1"
"a 2"
"a 3"
"b 5"

警告:请参阅以下评论。这看起来在版本3中简称为sortByAll,但现在它又回到了sortBy