Javascript 每隔一天,但应始终包括最终日期

Javascript 每隔一天,但应始终包括最终日期,javascript,logic,Javascript,Logic,这其实只是一个逻辑问题 我有一套日期,可能会有所不同。以下是三个例子: 1-Jan | 2-Jan | 3-Jan | 4-Jan | 5-Jan | 6-Jan | 7-Jan | 8-Jan 1-Jan | 2-Jan | 3-Jan | 4-Jan | 5-Jan | 6-Jan | 7-Jan | 8-Jan | 9-Jan 1-Jan | 2-Jan | 3-Jan | 2-Jan | | 4-Jan | | 6-Jan | | 8

这其实只是一个逻辑问题

我有一套日期,可能会有所不同。以下是三个例子:

1-Jan | 2-Jan | 3-Jan | 4-Jan | 5-Jan | 6-Jan | 7-Jan | 8-Jan

1-Jan | 2-Jan | 3-Jan | 4-Jan | 5-Jan | 6-Jan | 7-Jan | 8-Jan | 9-Jan

1-Jan | 2-Jan | 3-Jan
      | 2-Jan |       | 4-Jan |       | 6-Jan |       | 8-Jan

1-Jan |       | 3-Jan |       | 5-Jan |       | 7-Jan |       | 9-Jan

1-Jan |       | 3-Jan
我想逻辑,使每一个其他日期返回,但最终日期应始终包括在内。因此,上述三项将转化为以下内容:

1-Jan | 2-Jan | 3-Jan | 4-Jan | 5-Jan | 6-Jan | 7-Jan | 8-Jan

1-Jan | 2-Jan | 3-Jan | 4-Jan | 5-Jan | 6-Jan | 7-Jan | 8-Jan | 9-Jan

1-Jan | 2-Jan | 3-Jan
      | 2-Jan |       | 4-Jan |       | 6-Jan |       | 8-Jan

1-Jan |       | 3-Jan |       | 5-Jan |       | 7-Jan |       | 9-Jan

1-Jan |       | 3-Jan
集合的长度可以是60(我正在使用的当前集合的长度为31)

我正在使用D3.js并尝试使用奇数/偶数来决定返回的日期:

var setLength = dataSet.length;       
var divisor = (setLength%2==0 ? 2 : 3);
然后我在函数中使用除数:

function(d,i) {
     if(i%divisor == 0) return d.date);
}

如何更改上面的内容,使其始终在其他日期返回,包括集合的最后一个成员?

我认为您只是对索引使用了错误的测试。如果设置的长度为偶数,则筛选概率:
%2=0
,如果奇数筛选器为偶数:
%2==0

let数据=[
[“1-Jan”、“2-Jan”、“3-Jan”、“4-Jan”、“5-Jan”、“6-Jan”、“7-Jan”、“8-Jan”],
[“1-Jan”、“2-Jan”、“3-Jan”、“4-Jan”、“5-Jan”、“6-Jan”、“7-Jan”、“8-Jan”、“9-Jan”],
[“1-1月”、“2-1月”、“3-1月”],
[“1-1月”、“2-1月”、“3-1月”、“4-1月”]
];
let filtered=data.map(日期=>{
设奇数=日期。长度%2!=0;
返回日期
.filter((e,索引)=>奇数?索引%2==0:索引%2!=0)
});

console.log(过滤)
您可以使用
for
循环从数组
.length-1
迭代到
-1
,在每次迭代的最终表达式中将初始化变量递减
2
;将元素推送到新数组,按相反顺序返回数组

var-arr=[
[“1-Jan”、“2-Jan”、“3-Jan”、“4-Jan”
,“1月5日”、“1月6日”、“1月7日”、“1月8日”]
,[“1-一月”、“2-一月”、“3-一月”、“4-一月”
,“1月5日”、“1月6日”、“1月7日”、“1月8日”、“1月9日”]
,[“1-Jan”、“2-Jan”、“3-Jan”]
];
功能每隔一段距离结束(arr){
对于(var n=arr.length-1,res=[];n>-1;res.unshift(arr[n]),n-=2);
返回res
}
arr.forEach(功能(当前){
console.log(每一个FromEnd(curr))

})
集合是否存储在数组中?@guest271314是在数组中-因此
(d,i)
-
i
是每个成员的索引注意:您可以使用
res.unshift()
而不是
push()
这样就无需调用
res.reverse()