数组排序日期未按预期工作

时间:2015-11-23 08:41:21

标签: javascript jquery arrays sorting

我有一个包含这些值的数组

daterangefordb = [ "12/16/2015", "11/25/2015", "01/06/2016", "12/30/2015" ]

当我排序时,我会使用daterangefordb.sort()

[ "01/06/2016", "11/25/2015", "12/16/2015", "12/30/2015" ]

然而,预期的排序值应为 -

[ "11/25/2015", "12/16/2015", "12/30/2015", "01/06/2016" ]

任何解决方案?

2 个答案:

答案 0 :(得分:2)

没有提供任何功能的sort()方法将对数组的值执行简单的字母数字排序作为字符串。在您的情况下,您需要在比较之前将它们转换为日期。试试这个:

var sorted = daterangefordb.sort(function(a, b) {
    var aDate = new Date(a);
    var bDate = new Date(b);
    if (aDate < bDate)
        return -1;
    else if (aDate > bDate)
        return 1;
    return 0;
});

Example fiddle

答案 1 :(得分:0)

这些是字符串,因此正确排序。如果您希望将它们排序为daes,请将它们转换为日期

new Date( "11-05-2015".replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3") );

像这样的东西