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

标签 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 以内的任意长度(我正在使用的当前集合的长度为 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 data = [
  ["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"],
  ["1 - Jan", "2 - Jan", "3 - Jan","4 - Jan"]
];

let filtered = data.map(dates => {
  let odd = dates.length%2!=0;
  return dates
    .filter((e, index) => odd ? index%2==0 : index%2!=0)
});

console.log(filtered);

关于javascript - 每隔一个日期,但应始终包括最终日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40047827/

相关文章:

php - 跟踪 CDN 文件上的请求

javascript - 如何使 switch 语句一遍又一遍地运行而不会卡在负载上?

java - 如何获取一个驱动器 API 的访问 token 来上传文件?

java - 在 Java 中,具有三个 true 输入的 XOR 返回 true。为什么?

java - 按频率或计算时间排序的条件语句?

javascript - MeteorJS 从前一个函数中检索 JS 中的结果?

javascript - __flash__removeCallback is undefined errors in IE9 while removed the dom element

javascript - ASP .NET Core 使用多个 CORS 策略

boolean - 为什么 Coq 中的逻辑连接词和 boolean 值是分开的?

prolog - 计算机功能必须满足哪些要求才能被视为 "monotonic"?