[英]How to sort a 2 dimensional Integer array both ascending order and descending order
[英]How can I sort this array of objects by both its properties in descending order
我有一個包含年/月的整數表示的對象數組:
[
{
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;
});
首先,我按月分類,然后按年份排序。
雖然這很好用,但看起來有點hacky。 如何使用單個排序功能正確排序此數組?
提前致謝。
你可以這樣做:
items.sort(function(a, b){
return a.year === b.year ? b.month - a.month : b.year - a.year;
});
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 } ]
像這樣:
items.sort(function(a, b) {
return a.year - b.year || a.month - b.month;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.