有arr5 arr3 arr2三个数组,数组的内容为 [{start:'2022-01-01T08:00:00',end: '2022-01-01T10:00:00',priority:2}],他们的优先级分别为5、3、2,高优先级的节目与低优先级的节目重合时重叠部分将播出高优先级的节目,请用js写一段代码最终输出数组包含所有排期
时间: 2024-03-08 08:46:19 浏览: 46
好的,感谢你提供更详细的问题描述。以下是我为你编写的代码:
```javascript
// 假设 arr5, arr3 和 arr2 分别为优先级为 5、3 和 2 的数组
const arr5 = [
{ start: '2022-01-01T08:00:00', end: '2022-01-01T10:00:00', priority: 5, name: '节目1' },
{ start: '2022-01-01T09:00:00', end: '2022-01-01T12:00:00', priority: 5, name: '节目2' },
{ start: '2022-01-01T14:00:00', end: '2022-01-01T16:00:00', priority: 5, name: '节目3' },
];
const arr3 = [
{ start: '2022-01-01T11:00:00', end: '2022-01-01T14:00:00', priority: 3, name: '节目4' },
{ start: '2022-01-01T15:00:00', end: '2022-01-01T17:00:00', priority: 3, name: '节目5' },
];
const arr2 = [
{ start: '2022-01-01T08:30:00', end: '2022-01-01T09:30:00', priority: 2, name: '节目6' },
{ start: '2022-01-01T12:30:00', end: '2022-01-01T13:30:00', priority: 2, name: '节目7' },
];
// 将所有节目按照开始时间排序
const schedule = [...arr5, ...arr3, ...arr2].sort((a, b) => a.start.localeCompare(b.start));
// 遍历排期数组,找出重叠部分并且播放高优先级的节目
for (let i = 0; i < schedule.length - 1; i++) {
if (schedule[i].end > schedule[i + 1].start) {
if (schedule[i].end > schedule[i + 1].end && schedule[i].priority >= schedule[i + 1].priority) {
schedule.splice(i + 1, 1);
} else if (schedule[i].priority < schedule[i + 1].priority) {
schedule.splice(i, 1);
i--;
} else {
schedule[i].end = schedule[i + 1].start;
i--;
}
}
}
// 输出最终的排期数组
console.log(schedule);
```
这段代码首先将所有的节目按照开始时间排序,然后遍历排期数组,找出重叠部分并且播放高优先级的节目。最后输出最终的排期数组。注意,这段代码假设所有节目的时间都是合法的 ISO 8601 格式。
阅读全文