Javascript 基于另一个内部for循环的过滤器阵列

Javascript 基于另一个内部for循环的过滤器阵列,javascript,reactjs,react-native,array-filter,Javascript,Reactjs,React Native,Array Filter,我尝试根据for循环中的const数组过滤数组, 我的问题是未保存我的筛选数组 我使用的主阵列: const allHours=[ "10:00", "11:00", "12:00", "13:00", "14:00", "15:00", "16:00", "17:00", "18:00", "19:00", ]; 设可用小时=[]; 当我抓到一个小时被占用时,我有一个空数组。我想过滤掉小时,并返回一个新数组,该数组使用相同的allHours,而不应用过滤 for(设i=0;i{ if(时刻(

我尝试根据for循环中的const数组过滤数组, 我的问题是未保存我的筛选数组

我使用的主阵列:

const allHours=[
"10:00",
"11:00",
"12:00",
"13:00",
"14:00",
"15:00",
"16:00",
"17:00",
"18:00",
"19:00",
];
设可用小时=[];
当我抓到一个小时被占用时,我有一个空数组。我想过滤掉小时,并返回一个新数组,该数组使用相同的
allHours
,而不应用过滤

for(设i=0;i<7;i++){
常数日期=时刻().utc().add(i,“天”);
如果(date.weekday()==5 | | date.weekday()==6){
继续;
}否则{
if(meetings.map)(d=>{
if(时刻(d.date).utc().startOf(“日”).ISAME(日期.startOf(“日”),“日”)){
availableHours=allHours.filter(h=>h==时刻(d.date).utc().format(“LT”))
例如,我今天计划在
16:00
18:00
召开两次会议

在第一次迭代中,它像预期的那样过滤了
16:00

const availableHours=[
"10:00",
"11:00",
"12:00",
"13:00",
"14:00",
"15:00",
-
"17:00",
"18:00",
"19:00",
];
当它第二次迭代时,它将从头开始,可用数组将返回
allHours
数组,而不返回
18:00
, 我得到的最后一个可用小时数组是:

const allHours=[
"10:00",
"11:00",
"12:00",
"13:00",
"14:00",
"15:00",
"16:00",
"17:00",
--
"19:00",
];
这是错误的。结果应该如下所示:

const allHours=[
"10:00",
"11:00",
"12:00",
"13:00",
"14:00",
"15:00",
--
"17:00",
--
"19:00",
];

如何解决这个问题?

您不需要所有这些循环,一个好的性能方法是使用
设置数据类型并清除交叉点

例如:

const allHours=[
"10:00",
"11:00",
"12:00",
"13:00",
"14:00",
"15:00",
"16:00",
"17:00",
"18:00",
"19:00",
];
const busyHours=新设置([“16:00”、“18:00”])
让availableHours=allHours.filter(item=>busyHours.has(item)==false);
console.log(可用小时);
很容易修复

首先,通过
allHours
初始化
availableHours

let availableHours=[…allHours];
然后在会议循环中使用可用小时进行筛选

availableHours=availableHours.filter(…)

非常感谢。这正是我想要的。我希望这是正确的方法,不会带来太多性能