js中[[t1, t2], [t3,t4], [t5,t6]]中t1~t2,t3~t4,t5~t6表示不同的时间范围,同时其中存在相同的时间范围,怎么用一个函数将这些范围合并
时间: 2023-12-03 22:02:55 浏览: 56
你可以使用以下函数将这些时间范围合并成一个不含重复范围的数组:
```javascript
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] = Math.max(currentRange[1], range[1]);
}
}
// 将最后一个范围加入结果数组中
mergedRanges.push(currentRange);
return mergedRanges;
}
```
例如,对于输入 `[[1, 3], [2, 6], [8, 10], [15, 18]]`,函数会返回 `[[1, 6], [8, 10], [15, 18]]`。