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

Posted

技术标签:

【中文标题】Javascript - 通过删除服务持续时间来处理时隙【英文标题】:Javascript - Timeslots handling by removing service duration 【发布时间】:2021-04-09 17:24:28 【问题描述】:

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

我正在处理以下数据:

一个数组,其中包含 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", "09:05", "09:25" ... ,"18:00"]

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

我完全使用 javascript 工作并且尝试了很多,但在编码过程中总是至少有一个场景我没有涵盖。

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

亲切的问候,

花木

【问题讨论】:

【参考方案1】:

你好吗?

检查此代码:

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,然后过滤掉所有空值(我这样做是因为删除了数组中的一部分循环导致索引问题)

玩得开心!

【讨论】:

以上是关于Javascript - 通过删除服务持续时间来处理时隙的主要内容,如果未能解决你的问题,请参考以下文章

CloudKit公共数据库删除记录

重复删除和加载相同数据后,H2 db 大小持续增加

如何在持续时间后删除 blob?

javascript基本语法(持续补充)

Jenkins与Gitlib实现自动化部署与持续构建

在 JavaScript 中调用/执行后是不是需要删除回调函数?