gpt4 book ai didi

javascript - 从当前月份开始对数组进行排序

转载 作者:行者123 更新时间:2023-11-30 12:44:29 26 4
gpt4 key购买 nike

我有一个月份和年份的数组 - 月份显示为 1 到 12 之间的数字。我想对数组进行排序,以便我可以首先显示当年的当前月份。

allMonths = [month: 1 year: 2013 value: 25, 
month: 1 year: 2014 value: 17,
month: 2 year: 2013 value: 10,
month: 2 year: 2014 value: 16,
month: 3 year: 2013 value: 25,
month: 3 year: 2014 value: 17,
month: 4 year: 2013 value: 10,
month: 4 year: 2014 value: 16,
......etc ]

allMonths.sort(function(a, b){
if (a.year > b.year)
return 1;
if (a.month < b.month)
return -1;
})

我希望输出显示从当前月份开始的过去 12 个月及其值(我不需要显示年份)...

4: 16 (Apr 2014)
3 : 17(March 2014)
2: 16 (Feb 2014)
1: 16 (Jan 2014)
12 : 17(Dec 2013)
11: 16 (Nov 2013)
...etc

我没有太多排序数组的经验,所以我有点迷茫

最佳答案

如果年份相同,则返回月份之间的差异,否则返回年份本身之间的差异。

allMonths.sort(function(a, b) {
if (a.year === b.year) {
return a.month - b.month;
}
return a.year - b.year;
});

如果你想对数组进行降序排序(最近的事情排在前),只需交换比较年和月的顺序,就像这样

allMonths.sort(function(a, b) {
if (a.year === b.year) {
return b.month - a.month;
}
return b.year - a.year;
});

可以用三元表达式写得简洁,像这样

allMonths.sort(function(a, b) {
return a.year === b.year ? b.month - a.month : b.year - a.year;
});

注意:JavaScript 的排序不保证稳定。

关于javascript - 从当前月份开始对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23078921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com