我有一些日期中有一些空白。我希望能够在我的数据集中获得每个月的第一天,因为差距可能会在每月的01日出现。
这样做的最佳方式是什么?
日期采用MM/DD/YYYY
格式。
dates = [10/31/2014, 11/03/2014, 11/04/2014, 11/05/2014, ...]
我希望过滤器的结果是11/03/2014,这是我的数据集中包含的2014年11月的第一天。本例中的数据集中省略了周末。
但假设我的数据集很大并且还有更多的差距,我想找到每个月的第一天。
答案 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个月。
还要考虑使用回调而不是返回,以便不会阻止任何内容。