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

时间:2016-10-14 16:21:58

标签: 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-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);
}

如何更改上述内容,以便始终返回包含该组最后一个成员的其他日期?

2 个答案:

答案 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))
})