如何使用javascript在数组中找到最早的日期

use*_*195 0 javascript

如何使用javascript在数组中找到最早的日期即最小日期?示例:我有一个数组持有

{10-Jan-2013,12-Dec-2013,1-Sep-2013,15-Sep-2013}
Run Code Online (Sandbox Code Playgroud)

我的输出应该是:

{10-Jan-2013,1-Sep-2013,15-Sep-2013,12-Dec-2013}.
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Dav*_*mas 9

我建议将匿名函数传递给该sort()方法:

var dates = ['10-Jan-2013','12-Dec-2013','1-Sep-2013','15-Sep-2013'],
    orderedDates = dates.sort(function(a,b){
        return Date.parse(a) > Date.parse(b);
    });

console.log(orderedDates); // ["10-Jan-2013", "1-Sep-2013", "15-Sep-2013", "12-Dec-2013"]
Run Code Online (Sandbox Code Playgroud)

var dates = ['10-Jan-2013', '12-Dec-2013', '1-Sep-2013', '15-Sep-2013'],
  orderedDates = dates.sort(function(a, b) {
    return Date.parse(a) > Date.parse(b);
  });

console.log(orderedDates);
Run Code Online (Sandbox Code Playgroud)

JS小提琴演示.

请注意使用['10-Jan-2013','12-Dec-2013','1-Sep-2013','15-Sep-2013']引用的日期字符串数组.

以上将为您提供一系列日期,从最早到最晚列出; 如果你只想最早,那就用吧orderedDates[0].

修订后的方法,只显示最早的日期 - 按照问题的要求 - 如下:

var dates = ['10-Jan-2013', '12-Dec-2013', '1-Sep-2013', '15-Sep-2013'],
    earliest = dates.reduce(function (pre, cur) {
        return Date.parse(pre) > Date.parse(cur) ? cur : pre;
    });

console.log(earliest); // 10-Jan-2013
Run Code Online (Sandbox Code Playgroud)

var dates = ['10-Jan-2013', '12-Dec-2013', '1-Sep-2013', '15-Sep-2013'],
  earliest = dates.reduce(function(pre, cur) {
    return Date.parse(pre) > Date.parse(cur) ? cur : pre;
  });

console.log(earliest);
Run Code Online (Sandbox Code Playgroud)

JS小提琴演示.

参考文献:

  • 是否有原因导致该方法在 2021 年不起作用?当我在浏览器控制台中运行第一个代码片段(对日期进行排序)时,“orderedDates”中的日期保持与开始时相同的顺序。 (3认同)
  • @Kyle:我想不出它不再为您工作的原因,但是刚刚检查了我的控制台(并编辑了两个片段以将控制台输出包含在片段窗口中),我得到了代码中预测的正确结果评论。您使用的是特别古老的或利基的浏览器或平台吗?尽管代码中没有任何内容需要任何远程“现代”的东西,但这意味着您的浏览器选择可能有问题。 (2认同)