我正在尝试使用非常复杂的数据结构做两件事。
对于以下结构:
[
[
{ start: 2020-01-01T02:45:00.000Z, end: 2020-01-01T04:30:00.000Z },
{ start: 2020-01-01T00:15:00.000Z, end: 2020-01-01T02:00:00.000Z }
],
[
{ start: 2020-01-01T04:15:00.000Z, end: 2020-01-01T04:30:00.000Z },
{ start: 2020-01-01T00:15:00.000Z, end: 2020-01-01T01:30:00.000Z },
{ start: 2020-01-01T02:00:00.000Z, end: 2020-01-01T03:30:00.000Z }
],
[
{ start: 2020-01-01T02:00:00.000Z, end: 2020-01-01T03:30:00.000Z },
{ start: 2020-01-01T04:00:00.000Z, end: 2020-01-01T04:45:00.000Z },
{ start: 2020-01-01T00:45:00.000Z, end: 2020-01-01T01:15:00.000Z }
]
]
我想找到子数组中至少有两个元素的所有情况(即[0][0], [0][1], [0,3]
在时间上相互重叠。例如,我们可以看到 [0][0][0] 和 [0][1][ 0]和[0][2][1]重叠。然后我想减少到相交时间,即04:00 - 04:30。但不在同一个数组内,只能在第二维上跨越三个。
到目前为止,我已经提出了这个算法,但它失败了:
function seekOverlaps(arr) {
const overlapStore = [];
const determineOverlaps = function () {
for (let i = 0; i < arr.length; i++) {
let running = arr.length - i;
if (running === 1) {
arr.shift();
break;
}
overlapStore.push({
intersection: [arr[0].intersect(arr[i + 1])],
});
}
return arr;
};
while (arr.length > 1) {
determineOverlaps(arr);
}
return overlapStore;
}
intersect
Moment.js 范围在哪里..