我通过增加来解决JSON排序问题。现在它看起来:
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;
});
但它在控制台中表现出错误。
答案 0 :(得分:0)
您的array
变量实际上是object
,没有.sort()
方法,因为密钥是无序的。
答案 1 :(得分:0)
您需要将“数组”对象转换为实数数组,首先获取日期值并对其进行排序:
var date, realArrayOfDates = [];
for (date in array){
realArrayOfDates.push(date);
}
然后使用`sort():
对realArrayOfDates
进行排序
realArrayOfDates.sort();
现在,您可以按顺序迭代已排序的日期并从“数组”中拉出项目
var realArrayOfObjects = [];
for (i in realArrayOfDates) {
realArrayOfObjects.push(array[realArrayOfDates[i]]);
}
答案 2 :(得分:0)
使用下划线或lodash尝试这样的事情。这会在对象的每个项目上添加year
属性,将其转换为数组,然后对数组进行排序。
_.chain(array)
.map(function(val, key) {
return _.extend({year: key}, val);
})
.sortBy('year')
.value();