javascript - JS求助,计算2个时间段之间的重复和空隙值,并合并

查看:314
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆