JavaScript 智能日期过滤

JavaScript Smart Date Filtering

本文关键字:过滤 日期 智能 JavaScript      更新时间:2023-09-26

我有一些日期的数组,其中有间隙。 我希望能够在我的数据集中获取每个月的第一天,因为差距可能落在每月的 01 天。

最好的方法是什么?

日期采用MM/DD/YYYY格式。

dates = [10/31/2014, 11/03/2014, 11/04/2014, 11/05/2014, ...]

我希望过滤器的结果是 11/03/2014,这是我的数据集中包含的 2014 年 11 月的第一天。 在本例中,数据集中省略了周末。

但是假设我的数据集很大并且继续存在更多差距,我想找到每个月的第一天。

function foo(list, month) {
    var monthdates = list.filter(function(e,i,a) {    
        if(Number(e.split("/")[0]) == month)
        return e;
    });
    var leastdateofmonth = monthdates.reduce(function(p,c,i,a) {
        var pd = Number(p.split("/")[1]);
        var cd = Number(c.split("/")[1]);
        if(pd < cd)
            return p;
        else
            return c;
        });
    console.log(leastdateofmonth);
}
 //call it like this
foo(["10/31/2014", "11/03/2014", "11/04/2014", "11/05/2014"],11);

测试结果:

[anupam@localhost ~]$ node sortmonth.js 
11/03/2014

每月调用该函数并将其附加到"最小日期"列表中。在这里,我称之为第 11 个月。

还要考虑使用回调而不是返回,这样就不会阻止任何内容。