Javascript - 通过删除服务持续时间来处理时隙
Javascript - Timeslots handling by removing service duration
我是这个论坛的新手,因为脑洞大开而来到这里,但我真的很想实现一个预订系统应用程序。以下是我的故事:
我正在处理以下数据:
- 一个包含时间段的数组,时间段之间间隔 5 分钟,这样用户就可以 select 一个时间段来预约。如下所示:
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", "09:05", "09:25" ... ,"18:00"]
接下来是可以预订的服务,这些服务是有期限的。假设用户 select 使用了持续时间为 10 分钟的服务。现在我的大问题是如何从“timeslotArray”中删除服务的持续时间,以便用户只能 select 可用的时间段。因为现在从 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
,然后过滤掉所有空值(我这样做是因为删除循环中的数组部分会导致索引问题)
玩得开心!
我是这个论坛的新手,因为脑洞大开而来到这里,但我真的很想实现一个预订系统应用程序。以下是我的故事:
我正在处理以下数据:
- 一个包含时间段的数组,时间段之间间隔 5 分钟,这样用户就可以 select 一个时间段来预约。如下所示:
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", "09:05", "09:25" ... ,"18:00"]
接下来是可以预订的服务,这些服务是有期限的。假设用户 select 使用了持续时间为 10 分钟的服务。现在我的大问题是如何从“timeslotArray”中删除服务的持续时间,以便用户只能 select 可用的时间段。因为现在从 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
,然后过滤掉所有空值(我这样做是因为删除循环中的数组部分会导致索引问题)
玩得开心!