javascript - JS求助,计算2个时间段之间的重复和空隙值,并合并
本文介绍了javascript - JS求助,计算2个时间段之间的重复和空隙值,并合并的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
现在有这么个需求,暂且只有2个时间段需要处理(设置时间价格)。
假若已经存在时间段 2017-02-03 至 2017-02-12 (暂且成为时间段A),有下面情况:
1.这时候新增时间段 2017-02-10 至 2017-02-20(暂且成为时间段B) 。这时候2个时间段之间是存在重叠部分,我想将重叠部分提取出来,用后期新增价格覆盖之前已存在的,并将时间段B和成为时间段A合并起来。
2.新增的时间段为 2017-02-15 至 2017-02-20(暂且成为时间段C) 这时候和已经存在的最后2017-02-12之间是存在间隙值,我这时候也需要将这间隙值拿出来设置特殊的价格,最后合并时间段A、间隙时间段、时间段C。
求个思路,谢谢。
解决方案
我猜你的意思是合并时间段,添加价格断点?
我的思路是就是重新整理时间段,再做价格处理
let costA = ['2017-08-01','2017-08-05'];
let costB = ['2017-08-03','2017-08-12'];
let costC = ['2017-08-08','2017-08-12'];
function concat(cost1, cost2){
let temp = [...cost1,...cost2];
temp.sort((a,b) => a > b);
let newMidStart = temp.findIndex(d => d == cost2[0]);
let newCost1 = temp.splice(0, newMidStart);
let newCost2 = temp;
let newCost3;
if (newCost1.length < newCost2.length){
newCost1 = [newCost1[0], newCost2[0]];
newCost2 = [newCost2[0], newCost2[2]];
} else if (newCost1.length == newCost2.length && newCost1[1] != newCost2[0]){
newCost3 = [newCost1[1], newCost2[0]];
}
console.log(newCost1, newCost2, newCost3);
}
concat(costA, costB);
concat(costA, costC);
这篇关于javascript - JS求助,计算2个时间段之间的重复和空隙值,并合并的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文