2014-10-17 71 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(); 
相关问题