我有一个包含年/月的整数表示的对象数组:
[
{
year : 2014,
month : 10
},
{
year : 2011,
month : 6
},
{
year : 2014,
month : 11
}
]
我需要按月和年对它们进行排序,以便最新的对象是第一个。
目前我正在进行两种分类以实现这一目标:
items.sort(function(a, b){
if (a.month === b.month) {
return 0;
} else if (b.month > a.month) {
return 1;
}
return -1;
});
items.sort(function(a, b){
if (a.year === b.year) {
return 0;
} else if (b.year > a.year) {
return 1;
}
return -1;
});
首先,我按月分类,然后按年份排序。
虽然这种方法很好,但看起来有点笨拙。如何使用单个排序功能正确排序此数组?
提前致谢。
答案 0 :(得分:2)
你可以这样做:
items.sort(function(a, b){
return a.year === b.year ? b.month - a.month : b.year - a.year;
});
答案 1 :(得分:1)
JavaScript的排序就像这样
第一项大于第二项,如果收到正数
第一项小于第二项,如果收到负数
如果它们都相同则为零。
因此,我们首先比较这些年份。如果它们相同,我们将返回第二个月和第一个月之间的差异。如果年份不一样,那么我们将返回年份之间的差异。
items.sort(function(first, second) {
if (first.year === second.year) {
return second.month - first.month;
}
return second.year - first.year;
});
<强>输出强>
[ { year: 2014, month: 11 },
{ year: 2014, month: 10 },
{ year: 2011, month: 6 } ]
答案 2 :(得分:0)
像这样:
items.sort(function(a, b) {
return a.year - b.year || a.month - b.month;
});