这实际上只是一个逻辑问题。
我有一组日期可以改变。以下是三个例子:
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(当前设定的I' m长度为31)
我使用D3.js并尝试使用odd / even来决定返回的日期:
var setLength = dataSet.length;
var divisor = (setLength%2==0 ? 2 : 3);
然后我在函数中使用除数:
function(d,i) {
if(i%divisor == 0) return d.date);
}
如何更改上述内容,以便始终返回包含该组最后一个成员的其他日期?
答案 0 :(得分:2)
我认为你只是对索引使用了错误的测试。如果设置的长度是偶数滤波器赔率:pcoll = p | 'Read' >> beam.Read(My_Compressed_Source(args.input, splittable = False))
pcoll | beam.ParDo('parse tar member', Parse_Members())
p.run()
,如果奇数滤波器均匀:%2!=0
%2==0

答案 1 :(得分:2)
您可以使用for
循环从数组.length - 1
迭代到-1
,在每次迭代时以最终表达式将初始化变量递减2
;将元素推送到新数组,以相反的顺序返回数组
var arr = [
["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"]
];
function everyOtherFromEnd(arr) {
for (var n = arr.length - 1, res = []; n > -1; res.unshift(arr[n]), n -= 2);
return res
}
arr.forEach(function(curr) {
console.log(everyOtherFromEnd(curr))
})