js将多个连续时间段合并成一个时间段

7 阅读1分钟
mergeConsecutiveEvents(events) {
    if (events.length < 2) return events; // 如果事件少于两个,则无需合并

    let mergedEvents = [events[0]]; // 初始化结果数组,包含第一个事件
    for (let i = 1; i < events.length; i++) {
        const lastMergedEvent = mergedEvents[mergedEvents.length - 1];
        const currentEvent = events[i];
        if (lastMergedEvent.jssj === currentEvent.kssj) {
            // 如果上一个事件的结束时间和当前事件的开始时间相同,则合并它们
            lastMergedEvent.jssj = currentEvent.jssj;
        } else {
            // 如果不连续,则添加当前事件到结果数组中
            mergedEvents.push(currentEvent);
        }
    }
    return mergedEvents;
}

const dates=[
    {kssj:'2025-12-05 10:00:00',jssj:'2025-12-05 10:30:00'},
    {kssj:'2025-12-05 10:30:00',jssj:'2025-12-05 11:00:00'},
    {kssj:'2025-12-05 11:00:00',jssj:'2025-12-05 11:30:00'},
]
const newDates=mergeConsecutiveEvents(datas)
// newDates = [{kssj:'2025-12-05 10:00:00',jssj:'2025-12-05 11:30:00'}]

来源:豆包