JavaScript智能日期过滤

时间:2015-01-30 02:15:32

标签: javascript

我有一些日期中有一些空白。我希望能够在我的数据集中获得每个月的第一天,因为差距可能会在每月的01日出现。

这样做的最佳方式是什么?

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

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

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

但假设我的数据集很大并且还有更多的差距,我想找到每个月的第一天。

1 个答案:

答案 0 :(得分:0)

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个月。

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