2014-11-24 65 views
2

我想排序一個對象,但似乎無法保持排序後的每個對象的關鍵名稱。sortBy保留鍵名

下面是示例JSON我整理上

series_data: { 
embeded: { 
    objectNameA: { 
     item: { 
     last:{reportdate:2014-10-05, trend:=, change:0, value:0},…}, 
     first: {reportdate:2013-01-06, trend:?, change:null, value:0}, 
     high: 1, 
     low: 0, 
     median: 0.043478260869565216, 
     series: [{reportdate:2013-01-06, trend:?, change:null, value:0},…] 
    }, 
    objectNameB: {…} 

我需要的對象名becasue它在我的模板,用來形容一切。

這裏是怎麼了對數據進行排序

var items = _.sortBy(series_data.embeded, function(series, index) { 
    return series.cd.last.value 
}).reverse();` 

這將返回0:{…}, 1:{…}, 2:{…},當我需要它是objectNameA:{…},objectNameB:{…}

或更好,但

0:{objectNameA:{…},…}, 1:{objectNameB:{…},…} 

如何保持或增加的對象名,而在順序排序從最高到最低?

+0

這可能是有益的http://am.aurlien.net/post/1221493460/sorting- javascript-objects – 2014-11-24 22:27:26

+1

Javascript對象鍵/屬性沒有保證順序,所以試圖對它們排序是徒勞的。 – idbehold 2014-11-24 22:43:36

+0

排序屬性數組是否有效?之後,您可以遍歷數組並訪問您的對象。 var names = Object.keys(series_data.embeded).sort()//在這裏使用某種排序函數。 – Will 2014-11-24 22:49:42

回答

0

我不認爲你可以用_.sortBy()進行一次調用。

但是,可以在兩個步驟中完成它:

  1. 呼叫_.sortBy()和分配的每個對象的鍵作爲屬性
  2. 呼叫_.each()中的排序後的數組,以在得到所期望的對象結構

下面是一個例子JSBIN

潛在的問題是,對象是屬性的無序集合。

1

我實現了這個由_.sortBy()內設置每個object一個key財產 - 不理想,但一個解決方案

_.sortBy(object, function(item, key) { 
    item.key = key; 
    return item.sortattribute; 
});