2012-12-18 139 views
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/

+2

這可以是[XY問題](HTTP:// meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。長遠來看你想做什麼?對象沒有秩序感,所以你上面提出的問題實際上是不可能的。 – Dancrumb

回答

5

你不能在一個對象的屬性進行排序。對象中的屬性沒有任何特定的順序。

循環遍歷它們時返回的屬性的順序依賴於實現,並且在瀏覽器之間有所不同。

2

如前所述,您無法在Javascript中對屬性進行排序。但是,您可以做的是將排序信息保存在單獨的陣列中。

  1. 創建一個只包含對象的Keys的數組。
  2. 排序該陣列通過交叉如下:通過排序鍵陣列迭代從原始對象檢查值
  3. 訪問以排序次序值
相關問題