【问题标题】:Array sorting date is not working as expected数组排序日期未按预期工作
【发布时间】:2015-11-23 08:41:21
【问题描述】:

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

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

有什么解决办法吗?

【问题讨论】:

标签: javascript jquery arrays sorting


【解决方案1】:

没有提供函数的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

【讨论】:

    【解决方案2】:

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

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

    类似这样的方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-23
      相关资源
      最近更新 更多