[英]Sorting two layers array by underscore .sortBy or javascript .sort function
我对按增加进行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;
});
但显示控制台中的错误。
您的array
变量实际上是一个object
,它没有.sort()
方法,因为键是无序的。
您需要将“数组”对象转换为真实数组,首先获取日期值并对它们进行排序:
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]]);
}
使用下划线或lodash尝试类似的操作。 这将在对象的每个项目上添加year
属性,将其转换为数组,然后对数组进行排序。
_.chain(array)
.map(function(val, key) {
return _.extend({year: key}, val);
})
.sortBy('year')
.value();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.