使用日期格式对字符串数组进行排序

时间:2016-10-07 10:10:39

标签: javascript jquery angularjs

我有一个像这样的数组

["Apr 2014", "Sep 2015", "Jul 2010", "Jun 2016", "Sep 2013"]

我想将此数组排序为日期。但是当我在日期函数new Date("Apr 2014")中使用它时,它显示无效的日期格式错误。

我如何对这个数组进行排序?

1 个答案:

答案 0 :(得分:1)

您可以使用一个分隔日期字符串的函数,并返回一个包含年份和月份数字的数组。月份取自具有月份名称的对象作为哈希值。



var array = ["Apr 2014", "Sep 2015", "Jul 2010", "Jun 2016", "Sep 2013", "Jan 2013"];
array.sort(function (a, b) {
    function getMonth(m) {
        return  {
            jan: 1, feb: 2, mar: 3, apr: 4, may: 5, jun: 6, jul: 7, aug: 8, sep: 9, oct: 10, nov: 11, dec: 12
        }[m.slice(0, 3).toLowerCase()] || 0;
    }

    var aa = a.split(' '),
        bb = b.split(' ');

    return aa[1] - bb[1] || getMonth(aa[0]) - getMonth(bb[0]);
});
console.log(array);