2014-10-17 55 views
0

通過增加JSON排序有問題。現在它看起來:通過下劃線.sortBy或javascript .sort函數對兩個圖層數組排序

var array = { 
    "2014\/2015":{ 
    "gamesPlayed":17,"goals":2,"assists":8,"points":10 
    }, 
    "2013\/2014":{ 
    "gamesPlayed":52,"goals":18,"assists":16,"points":34 
    }, 
    "2012\/2013":{ 
    "gamesPlayed":39,"goals":12,"assists":15,"points":27 
    } 
}; 

我需要在今年進行排序項,得到這樣2012/2013對象:{...},2013/2014:{...},2014/2015:{.. } 我嘗試對它進行排序:

var sorted = array.sort(function(a,b){ 
    return a - b; 
}); 

,但它顯示控制檯misstake。

回答

0

您的array變量實際上是object,它沒有.sort()方法,因爲這些密鑰是無序的。

+0

我該怎麼辦? – 2014-10-17 14:46:11

+0

使用真實數組@stress_tn – megawac 2014-10-17 14:53:24

0

你需要你的 '陣' 對象轉換爲真正的數組,第一個獲取日期值,並對其進行排序:使用`排序()

var date, realArrayOfDates = []; 
for (date in array){ 
    realArrayOfDates.push(date); 
} 

然後排序realArrayOfDates

realArrayOfDates.sort(); 

現在,您可以遍歷排序的日期,並按順序將項目從「數組」中取出

var realArrayOfObjects = []; 
for (i in realArrayOfDates) { 
    realArrayOfObjects.push(array[realArrayOfDates[i]]); 
} 
0

試試像這樣的下劃線或lodash。這會在對象的每個項目上添加一個year屬性,將其轉換爲數組,然後對數組進行排序。

_.chain(array) 
.map(function(val, key) { 
    return _.extend({year: key}, val); 
}) 
.sortBy('year') 
.value(); 
相關問題