繁体   English   中英

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

[英]Array sorting date is not working as expected

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

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" ]

有什么办法吗?

不提供任何功能的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;
});

小提琴的例子

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

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

像这样的东西

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM