微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Javascript - 通过删除服务持续时间来处理时间段

如何解决Javascript - 通过删除服务持续时间来处理时间段

我是这个论坛的新手,我来这里是因为我的大脑正在爆炸,但我真的很想实现构建一个预订系统应用程序。以下是我的故事:

我正在处理以下数据:

  • 一个包含 5 分钟时间段的数组,以便用户可以选择一个时间段来预约他的约会。如下所示:

var timeslotArray = ["09:00","09:05","09:10","09:15","09:20","09:25" ...,"18:00"]

注意: 我已经从“timeslotArray”中删除了一些时间,例如从“12:00”到“13:00”的休息时间。或者如果还有其他约会,那么我设法删除了这些时间。所以我最终得到一个“timeslotArray”,它看起来像:

var timeslotArray = ["09:00","18:00"]

接下来是可以预订的服务,这些服务是有持续时间的。假设用户选择了一个持续时间为 10 分钟的服务。现在我的大问题是如何从“timeslotArray”中删除服务的持续时间,以便用户只能选择可用的时间段。因为现在从 09:10 到 09:25 有休息时间。这意味着 09:05 在“timeslotArray”中不应该是可见的,因为服务持续时间是 10 分钟。(开始休息是 09:10,减去 10 分钟是 09:00)。另请记住,休息时间旁边还有其他约会,我需要将其从开始时间中删除 10 分钟。

我完全使用 Javascript 并尝试了很多,但总有至少一种场景是我在编码过程中没有涵盖的。

希望有人能帮助我,哪怕是一小步。还是谢谢!

亲切的问候,

哈纳克

解决方法

你好吗?

检查此代码:

var timeslotArray = ["09:00","09:05","09:10","09:15","09:20","09:25","18:00"]

function updateArray(timeChosen,duration){
var startTime = new Date(Date.parse('01/01/2011 '+timeChosen));
var endTime =  new Date(startTime.getTime() + duration * 60000);

timeslotArray.forEach((hour,index)=>{
var hourAsDate = new Date(Date.parse('01/01/2011 '+ hour));
if (hourAsDate < endTime && hourAsDate >= startTime){
timeslotArray[index] = null; 
}
});
timeslotArray = timeslotArray.filter((hour) => {return hour != null;});
}

updateArray("09:00",20);
console.log(timeslotArray);

函数 updateArray 应该获取一个小时的字符串(例如“05:00”或“09:00”)和一个表示持续时间的数字(表示分钟)。

数组正在通过一个 forEach 命令,该命令使开始时间和结束时间之间的所有时间为 null,然后过滤掉所有空值(我这样做是因为删除了部分循环内的数组会导致索引问题)

玩得开心黑客!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。