测试日期集合在哪些范围内不重叠
Test in which ranges the collection of dates aren't overlapping
我编写了一个脚本来渲染带有 javascript 中的数据集的时间线。
但我必须标记未找到信息的区域(图中黄色)。
我完全不知道如何在数据集中没有信息的情况下获取范围。
(我使用 momentjs 进行日期计算)
示例数据集:
data: [
{id: 1, lane: 1, start: 05-02-2006, end: 09-09-2008},
{id: 2, lane: 2, start: 01-01-2008, end: 31-07-2010},
{id: 3, lane: 3, start: 15-12-2013, end: 12-02-2016}
]
示例图片:
我会创建一个新数组并填充空白,就像这样
var dates = [];
for (var i=0; i<data.length; i++) {
var now = data[i],
thisStart = parseDate(now.start),
thisEnd = parseDate(now.end),
prevEnd = data[i-1] ? parseDate(data[i-1].end) : null;
if ( prevEnd && prevEnd <= thisStart ) {
dates.push({id: i + 0.5, lane: 0, start: prevEnd, end: thisStart});
}
dates.push({id : now.id, lane: now.lane, start: thisStart, end: thisEnd});
}
你最终会得到这样的数组
dates : [
{id: 1, lane: 1, start: "2006-02-04T23:00:00.000Z", end: "2008-09-08T22:00:00.000Z"},
{id: 2, lane: 2, start: "2007-12-31T23:00:00.000Z", end: "2010-07-30T22:00:00.000Z"},
{id: 2.5, lane: 0, start: "2010-07-30T22:00:00.000Z", end: "2013-12-14T23:00:00.000Z"},
{id: 3, lane: 3, start: "2013-12-14T23:00:00.000Z", end: "2016-02-11T23:00:00.000Z"}
]
请注意,我用 id if .5
和 lane 0
标记了填充空白的对象,你可以在那里做任何你想做的事情,只要你在创建时可以识别它布局。
我还创建了一个 parseDate
函数,它所做的只是将日期解析为有效的日期对象,它包含在下面的 fiddle 中
我编写了一个脚本来渲染带有 javascript 中的数据集的时间线。 但我必须标记未找到信息的区域(图中黄色)。 我完全不知道如何在数据集中没有信息的情况下获取范围。 (我使用 momentjs 进行日期计算)
示例数据集:
data: [
{id: 1, lane: 1, start: 05-02-2006, end: 09-09-2008},
{id: 2, lane: 2, start: 01-01-2008, end: 31-07-2010},
{id: 3, lane: 3, start: 15-12-2013, end: 12-02-2016}
]
示例图片:
我会创建一个新数组并填充空白,就像这样
var dates = [];
for (var i=0; i<data.length; i++) {
var now = data[i],
thisStart = parseDate(now.start),
thisEnd = parseDate(now.end),
prevEnd = data[i-1] ? parseDate(data[i-1].end) : null;
if ( prevEnd && prevEnd <= thisStart ) {
dates.push({id: i + 0.5, lane: 0, start: prevEnd, end: thisStart});
}
dates.push({id : now.id, lane: now.lane, start: thisStart, end: thisEnd});
}
你最终会得到这样的数组
dates : [
{id: 1, lane: 1, start: "2006-02-04T23:00:00.000Z", end: "2008-09-08T22:00:00.000Z"},
{id: 2, lane: 2, start: "2007-12-31T23:00:00.000Z", end: "2010-07-30T22:00:00.000Z"},
{id: 2.5, lane: 0, start: "2010-07-30T22:00:00.000Z", end: "2013-12-14T23:00:00.000Z"},
{id: 3, lane: 3, start: "2013-12-14T23:00:00.000Z", end: "2016-02-11T23:00:00.000Z"}
]
请注意,我用 id if .5
和 lane 0
标记了填充空白的对象,你可以在那里做任何你想做的事情,只要你在创建时可以识别它布局。
我还创建了一个 parseDate
函数,它所做的只是将日期解析为有效的日期对象,它包含在下面的 fiddle 中