javascript - 以 dd-mmm-yy 格式对包含日期的数组进行排序

标签 javascript

我正在尝试使用 sort() 函数对包含字符串格式 (dd-mmm-yy) 日期的数组进行排序:

var array = ["1-jun-15", "1-feb-15", "1-apr-15", "1-may-15", "1-jan-15", "1-mar-15"];

array.sort(function(a, b) {
  return new Date(a).getTime() - new Date(b).getTime();
});

但没有成功。

这里出了什么问题? Here is the JSFiddle .

编辑:虽然通过小的修正解决了排序问题,但主要问题是跨浏览器支持,下面的许多答案都有不同的解决方法。

最佳答案

您可以拆分日期字符串并使用一个对象作为月份值。

该提案首先按年排序,然后按对象的月份排序,然后按天排序。

var array = ["1-jun-15", "1-feb-15", "1-apr-15", "1-may-15", "1-jan-15", "1-mar-15"],
    MONTHS = { jan: 1, feb: 2, mar: 3, apr: 4, may: 5, jun: 6, jul: 7, aug: 8, sep: 9, oct: 10, nov: 11, dec: 12 };

array.sort(function (a, b) {
    var aa = a.split('-'),
        bb = b.split('-');

    return aa[2] - bb[2] || MONTHS[aa[1]] - MONTHS[bb[1]] || aa[0] - bb[0];
});

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 以 dd-mmm-yy 格式对包含日期的数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40866236/

相关文章:

javascript - 将数据从js发送到servlet并返回响应

javascript - 如何让我的内容幻灯片在单击后重置其自动滚动计时器?

javascript - 无需 HTML 即可淡入淡出背景图像

javascript - Ember .get 未返回正确的值

javascript - 在 django 中提交表单时更改日期字段值

javascript - 替换数组中的字符串集

javascript - Bootstrap 轮播控件不起作用

javascript - 我应该向原型(prototype)添加*内部*属性吗?

javascript - 使用 getTime() 转换时仅在某些日期获取 NaN

javascript - 在变量赋值表达式中混淆使用逗号和换行符使 var 看起来是全局的