You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从数组双向移除元素以计算可预约时段?

解决方案

核心思路是:先计算出禁止预约的起始边界(预订起始index向前偏移x个位置),然后筛选出不在[禁止起始边界, 预订结束index]范围内的时间点即可。

修改后的代码实现

// 定义需要向前移除的时间点数量x,根据业务需求设置,示例为1
const x = 1;

// 计算禁止预约的起始index,用Math.max(0, ...)防止出现负数索引
const forbiddenStartIndex = Math.max(0, startTimeIndex - x);

// 一次性筛选出所有可预约的时间点
const validAvailableHours = availableHours.filter((item, index) => {
  // 保留两种情况:索引小于禁止起始边界,或者索引大于预订结束index
  return index < forbiddenStartIndex || index > endTimeIndex;
});

逻辑说明

  1. 计算禁止起始边界:用startTimeIndex - x得到需要提前排除的起始位置,再通过Math.max(0, ...)确保不会出现负数(比如当预订起始index本身小于x时,避免索引越界)。
  2. 筛选逻辑优化:把原来两次filter合并成一次,更高效。只保留不在禁止区间内的时间点,自然就排除了预订时段和它前面x个会重叠的时段。

示例验证

拿你给出的时间数组[1:00, 2:00, 3:00, 4:00, 5:00, 6:00, 7:00]举例:

  • 已有预订的startTimeIndex=3(对应4:00),endTimeIndex=4(对应5:00),x=1
  • 计算得到forbiddenStartIndex=3-1=2
  • 筛选后保留的索引是0、1、5、6,对应时间[1:00,2:00,6:00,7:00],完全符合需求。

内容的提问来源于stack exchange,提问作者nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 04:05:28