function mergeTimeRanges(ranges) { // 先按照时间的起点排序 ranges.sort((a, b) => a[0] - b[0]); const mergedRanges = []; let currentRange = ranges[0]; for (let i = 1; i < ranges.length; i++) { const range = ranges[i]; // 如果当前范围的终点比下一个范围的起点小,则说明二者无交集,将当前范围加入结果数组中,并更新当前范围为下一个范围 if (currentRange[1] < range[0]) { mergedRanges.push(currentRange); currentRange = range; } else { // 否则说明二者有交集,将当前范围的终点更新为二者的终点的最大值 currentRange[1] = new Date(Math.max(currentRange[1].getTime(), range[1].getTime())); } } // 将最后一个范围加入结果数组中 mergedRanges.push(currentRange); return mergedRanges; }没有将这些时间范围合并成一个不含重复范围的数组效果
时间: 2023-11-26 21:03:02 浏览: 126
你提供的函数 `mergeTimeRanges` 实现了将重叠的时间范围合并成一个不重复的数组。但是需要注意的是,时间范围数组中的每个元素应该是一个长度为 2 的数组,第一个元素是起始时间,第二个元素是结束时间,且起始时间和结束时间都应该是 `Date` 类型。
你可以将你的时间范围数组作为参数传递给这个函数,然后将返回的合并后的时间范围数组赋值给一个变量。例如:
```
const ranges = [
[new Date('2021-01-01T00:00:00Z'), new Date('2021-01-03T00:00:00Z')],
[new Date('2021-01-02T00:00:00Z'), new Date('2021-01-04T00:00:00Z')],
[new Date('2021-01-05T00:00:00Z'), new Date('2021-01-07T00:00:00Z')],
];
const mergedRanges = mergeTimeRanges(ranges);
console.log(mergedRanges); // [[Fri Jan 01 2021 00:00:00 GMT+0000 (Coordinated Universal Time), Tue Jan 04 2021 00:00:00 GMT+0000 (Coordinated Universal Time)], [Tue Jan 05 2021 00:00:00 GMT+0000 (Coordinated Universal Time), Thu Jan 07 2021 00:00:00 GMT+0000 (Coordinated Universal Time)]]
```
阅读全文
相关推荐

















