2

我有一个对象数组。我想使用 underscore.js 按它们各自的值对每个对象进行排序。

var myArray = [
    {a:1, b:2, c:2},
    {a:1, b:3, c:2},
    {a:3, b:2, c:1},
    {a:1, b:1, c:4},
    {a:1, b:2, c:4},
];

我试过这个方法没有运气...

var myArray = [
    {a:1, b:2, c:2},
    {a:1, c:2, b:3},
    {c:1, b:2, a:3},
    {a:1, b:1, c:4},
    {a:1, b:2, c:4},
];

我正在尝试使用这种方法。

_.each(myArray, function(obj) {
    _(obj).sortBy(function(val, key) {
      return val;
    });

});

这是我的小提琴http://jsfiddle.net/rsturim/wNLkX/

4

2 回答 2

5

您不能对对象中的属性进行排序。对象中的属性没有任何特定的顺序。

循环访问属性时返回的顺序取决于实现,并且在浏览器之间有所不同。

于 2012-12-18T22:15:00.097 回答
2

如前所述,您不能在 Javascript 中对属性进行排序。但是,您可以做的是将排序信息保存在单独的数组中。

  1. 创建一个仅包含对象键的数组。
  2. 通过交叉检查原始对象中的值对该数组进行排序
  3. 通过遍历排序的键数组以排序顺序访问值
于 2012-12-18T22:27:51.307 回答