这实际上只是一个逻辑问题。
我有一组日期可能会有所不同。以下是三个示例:
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/