栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

前端对多对时间段进行处理 取并集合并没有交集的项

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

前端对多对时间段进行处理 取并集合并没有交集的项

// timePairList = [{startTime:'2022-07-20 05:00:00','endTime':'2022-07-20 18:50:00'},{startTime:'2022-07-20 07:00:00','endTime':'2022-07-20 19:50:00'},{startTime:'2022-07-20 06:00:00','endTime':'2022-07-20 07:10:00'}]// 三个互相交叉

// timePairList = [{startTime:'2022-07-20 05:00:00','endTime':'2022-07-20 18:50:00'},{startTime:'2022-07-20 07:00:00','endTime':'2022-07-20 19:50:00'},{startTime:'2022-07-20 20:00:00','endTime':'2022-07-20 20:30:00'}]// 两个互相交叉 第三项不交叉

// timePairList = [{startTime:'2022-07-20 05:00:00','endTime':'2022-07-20 18:50:00'},{startTime:'2022-07-20 05:00:00','endTime':'2022-07-20 19:00:00'},{startTime:'2022-07-20 19:00:00','endTime':'2022-07-20 20:10:00'}]

// timePairList = [{startTime:'2022-07-20 05:00:00','endTime':'2022-07-20 18:50:00'},{startTime:'2022-07-20 07:00:00','endTime':'2022-07-20 19:50:00'}]

// timePairList = [{startTime:'2022-07-20 05:00:00','endTime':'2022-07-20 18:50:00'},{startTime:'2022-07-20 04:00:00','endTime':'2022-07-20 19:50:00'},{startTime:'2022-07-20 03:00:00','endTime':'2022-07-20 07:10:00'}]

export const compare = (first, second) => {

const left = [new Date(first.startTime), new Date(first.endTime)];

const right = [new Date(second.startTime), new Date(second.endTime)];

if (left[1] < right[0]) {

// 没有交集

return [first, second];

}

if (left[1] >= right[0]) {

// 有交集

if (left[1] < right[1]) {

return [

{

startTime: first.startTime,

endTime: second.endTime,

},

];

} else {

return [

{

startTime: first.startTime,

endTime: first.endTime,

},

];

}

}

};

export const compose = (arr) => {

arr = arr.sort((a,b)=>{

let startA = moment(a.startTime).valueOf()

let startB = moment(b.startTime).valueOf()

return startA-startB

})

let res = [];

let temp = [arr[0]];

let len = arr.length;

let i = 0;

if (len < 2) {

return arr;

}

while (i < len - 1) {

temp = compare(temp[temp.length - 1], arr[i + 1]);

if (temp.length === 2) {

// 无交集

res.push(temp[0]);

}

i += 1;

}

res.push(temp[temp.length - 1]);

return res;

};


 


 

const arr = [
  { startTime: "2022-07-20 05:00:00", endTime: "2022-07-20 05:50:00" },
  { startTime: "2022-07-20 06:00:00", endTime: "2022-07-20 06:10:00" },
  { startTime: "2022-07-20 07:00:00", endTime: "2022-07-20 07:50:00" },
  { startTime: "2022-07-20 08:10:00", endTime: "2022-07-20 19:50:00" },
];

console.log(compose(arr));

第二种方法:

const mergeTime = (arr: object[]) => { if (arr.length <= 0) { return; } else if (arr.length <= 1) { result = result.concat(arr); return; } const temp: object[] = []; for (let index = 0; index < arr.length - 1; index++) { const element1 = arr[index]; const element2 = arr[index + 1]; const startTimeDiff = moment(element1.endTime).diff( moment(element2.startTime), ); if (startTimeDiff >= 0) { const endTimeDiff = moment(element1.endTime).diff( moment(element2.endTime), ); if (endTimeDiff > 0) { temp.push({ startTime: element1.startTime, endTime: element1.endTime, }); } else { temp.push({ startTime: element1.startTime, endTime: element2.endTime, }); }

if (arr.length > 2) { const nextSource = temp.concat(arr.slice(2)); mergeTime(nextSource); } else { result = result.concat(temp); } break; } else { result.push(element1); if (arr.length > 1) { mergeTime(arr.slice(1)); } break; } } console.log(result, 'result'); };

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031733.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号