【问题标题】:Sort month names对月份名称进行排序
【发布时间】:2014-12-22 09:11:08
【问题描述】:

使用 jQuery 按顺序对月份名称进行排序

输入

month = [ "Apr","May","Jun","Oct","Nov","Dec","Jul","Aug","Sep"];

预期输出

month = [ "Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];

如何对月份名称进行排序? sort() 仅作用于短字母、字母数字或数值。

【问题讨论】:

  • 嗯...月份名称是字母,不是吗?
  • 你最初是如何得到这个输出的?
  • @Harko,有件事告诉我我们不同意 alphabetic 的含义:)
  • @Sadikhasan 我的错误,对不起

标签: jquery


【解决方案1】:

获取一年中按正确顺序排列的所有月份的数组(硬编码以供参考),并使用主月份数组的索引作为sort()中的排序标准

var allMonths = ['Jan','Feb','Mar', 'Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];

var month = [ "Apr","May","Jun","Oct","Nov","Dec","Jul","Aug","Sep"];

month.sort(function(a,b){
    return allMonths.indexOf(a) > allMonths.indexOf(b);
});

// returns  ["Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]

DEMO

【讨论】:

  • 我想要的完全预期的输出。我要怎么感谢你。真的很欣赏你。非常感谢。
  • 我错过了什么吗?这段代码是错误的。排序函数应该返回一个整数。有时您可能会很幸运地返回一个布尔值,但实际上您应该返回 allMonths.indexOf(a) - allMonths.indexOf(b) 更多信息请参阅此问题:stackoverflow.com/questions/24080785/…
【解决方案2】:

就我而言,我需要按照RTF 在已接受答案的评论中的建议稍微调整Chance Smith 的答案以使其正常工作。修改将 '>' 更改为 '-'。我将工作代码粘贴在这里以防有人需要。

var allMonths = ['Jan','Feb','Mar', 'Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];

var month = [ "Apr","May","Jun","Oct","Nov","Dec","Jul","Aug","Sep"];

month.sort(function(a,b){
    return allMonths.indexOf(a) - allMonths.indexOf(b);
});

// returns  ["Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]

【讨论】:

    猜你喜欢
    • 2013-11-24
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多