我在08:00-17:00之间为预订申请提供大量插槽。每个插槽都是5分钟,我已经删除了所有插槽,这些插槽与已经预订的插槽重叠。
例如,在11:00-12:50之间已经有一个事件,所以这个时间段不可用。
{
"date": "2019-03-15",
"start": "2019-03-15T09:15:00.000Z",
"starttime": "10:15",
"end": "2019-03-15T09:45:00.000Z",
"endtime": "10:45"
},
{
"date": "2019-03-15",
"start": "2019-03-15T09:20:00.000Z",
"starttime": "10:20",
"end": "2019-03-15T09:50:00.000Z",
"endtime": "10:50"
},
{
"date": "2019-03-15",
"start": "2019-03-15T09:25:00.000Z",
"starttime": "10:25",
"end": "2019-03-15T09:55:00.000Z",
"endtime": "10:55"
},
{
"date": "2019-03-15",
"start": "2019-03-15T09:30:00.000Z",
"starttime": "10:30",
"end": "2019-03-15T10:00:00.000Z",
"endtime": "11:00"
},
{
"date": "2019-03-15",
"start": "2019-03-15T11:50:00.000Z",
"starttime": "12:50",
"end": "2019-03-15T12:20:00.000Z",
"endtime": "13:20"
},
但是,在我将它返回给最终用户之前,我需要删除所有元素,以便每个插槽之间有20分钟的间隙。因此,我希望他们每隔5分钟就有一个20分钟的间隙。因此,结束时间必须是10:20 ... 10:40 ... 11:00 ..所有事件必须与已经预订的事件没有差距。因此每个插槽都必须有一个连接到现有事件的插槽。
我该怎么做?
将Json对象放在一个数组中并执行以下代码。
搜索是用于查找时隙的变量。
function toDate(dStr,format) {
var now = new Date();
if (format == "h:m") {
now.setHours(dStr.substr(0,dStr.indexOf(":")));
now.setMinutes(dStr.substr(dStr.indexOf(":")+1));
now.setSeconds(0);
return now;
}else
return "Invalid Format";
}
let serach="13:10";
let value = sample.filter((val) => {
if( (toDate(val.endtime,"h:m").toTimeString() >= toDate(serach,"h:m").toTimeString()) && (toDate(val.starttime,"h:m").toTimeString() <= toDate(serach,"h:m").toTimeString()) ){
return val.starttime;
}
})
value将保存具有与json中的日期匹配的时间段的数组