javascript按日期范围

时间:2018-01-09 15:22:00

标签: javascript arrays date

我有一整年的连续日期(all)。

我还有一个包含2个日期范围(datesArray)的数组。

我循环遍历第一个数组并获取该日期的另一个数组的索引,该索引返回索引或-1。

然后我将该索引与之前的索引进行比较,以查看是否存在匹配

如果找到-1,我需要创建一个数组并添加日期。如果下一个日期也是-1,我想添加到新创建的数组,否则什么都不做。

我应该最终得到2个独立的数组,每个日期范围为1个

var prev = '';
var array = [];
var j = 0;

$.each(all, function(i,v) {
    var index = datesArray.map(Number).indexOf(+v);

    if(index === prev) {
        array[j].push(v);
    }
    else if(index === -1) {
        array[j] = v;

        j++;
    }

    prev = datesArray.map(Number).indexOf(+v);

});

我如何完成我的代码来创建这两个新数组,或者甚至更好地在第一个范围的最后一个日期和第二个日期的第一个日期之间切换datesArray 2?

1 个答案:

答案 0 :(得分:0)

我在这里搜索后能够自己解决问题

var ranges = function() {
    var today,
        oneDay = 24 * 60 * 60 * 1000, // hours*minutes*seconds*milliseconds
        prev = new Date(datesArray[0]),
        range = [];

    $.each(datesArray, function(i,v) {

        if(i === 0) {
            prev = datesArray[i];
        }
        else {
            prev = datesArray[i - 1];   
        }

        var d = new Date(prev); // today!
        var diffDays = Math.round(Math.abs((v.getTime() - d.getTime()) / (oneDay)));

        if(diffDays > 1 || (datesArray.length - 1) === i) {
            range.push(i);
        }
    });

    return range;
};