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

如何从小时数组中移除已存在于对象数组中的小时?

解决方法:过滤掉已占用的小时数

先聊聊你之前尝试里的问题:

  • 第一种方法:CurrentSchedule是数组,不能直接调用CurrentSchedule.hour——数组本身没有这个属性,得遍历里面的每个对象才能拿到对应的hour值。
  • 第二种方法:hoursToRemove是数组,你拿单个小时字符串和整个数组做相等判断,结果永远是false,应该用includes()来判断当前小时是否在要移除的列表里。
  • 第三种方法:首先是拼写错误,lenght应该是length;其次每次循环都基于原hours数组重新过滤,最后只会保留最后一次过滤的结果,之前过滤掉的小时会重新出现在数组里,逻辑不成立。

下面是两种正确的实现方式:

方式一:用Set存储已占用小时(效率更高)

// 提取所有已占用的小时,存入Set(判断存在性的效率比数组高)
const occupiedHours = new Set(CurrentSchedule.map(item => item.hour));
// 过滤hours数组,保留不在已占用集合里的小时
const updatedHours = hours.filter(hour => !occupiedHours.has(hour));

console.log(updatedHours); // 输出:["09:00","10:00","11:00","13:00","14:00"]

方式二:用数组+includes()实现(更直观)

// 提取所有已占用的小时到数组
const hoursToRemove = CurrentSchedule.map(item => item.hour);
// 过滤hours数组,排除已存在的小时
const updatedHours = hours.filter(hour => !hoursToRemove.includes(hour));

核心逻辑:

  1. 先用map把CurrentSchedule里的所有hour值提取出来,得到已占用小时的集合/数组。
  2. 再用filter遍历hours数组,只保留不在已占用列表里的元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:50:24