JavaScript中的Reduce方法
我想这更像是一个逻辑问题,但它也涉及到reduce方法。我想这是解决这类问题的合适方法 以下是我的3个阵列: const availableHours=[9,10,11,12,13,14]; 常量exArr1=[9,10,11,12,13,14] 常量exArr2=[10,11,12,13] 第一个表示所有可用的小时数。用户总是预订其中两个,彼此相邻。9和10、13和14、10和11等等。。。在任何配置中。现在,如果用户预订了所有三个集合,即9-10、11-12、13-14,我需要返回true。这意味着这一天已经订满了。但如果是f.ex预订的话。像10-11和12-13一样,它也应该返回真值,因为那些未预订的时间9和14不能预订,因为它们是单小时。两个示例数组都应返回true 你能帮个忙吗?我试着用reduce方法来做,但做不到 谢谢大家! 这个答案没有使用Array.prototype.reduce,但我认为它解决了您的问题 它的工作原理是首先从可用时间列表中删除所有预订的时间。这假设每天的预订是正确的,每小时连续预订一对 然后,它遍历剩余的可用小时数,并检查连续的小时数对。如果没有找到,则视为当天已预订完毕。如果找到一个或多个,则未完全预订 可用常数=[9,10,11,12,13,14]; const day1=[9,10,11,12,13,14]; const day2=[10,11,12,13]; const day3=[9,10,12,13]; const day4=[9,10]; 函数为fullybookedday,可用{ 剩余常数=available.filterhour=>!day.includeHour; 对于let i=0;iJavaScript中的Reduce方法,javascript,arrays,Javascript,Arrays,我想这更像是一个逻辑问题,但它也涉及到reduce方法。我想这是解决这类问题的合适方法 以下是我的3个阵列: const availableHours=[9,10,11,12,13,14]; 常量exArr1=[9,10,11,12,13,14] 常量exArr2=[10,11,12,13] 第一个表示所有可用的小时数。用户总是预订其中两个,彼此相邻。9和10、13和14、10和11等等。。。在任何配置中。现在,如果用户预订了所有三个集合,即9-10、11-12、13-14,我需要返回true
console.logcheckexArr2,availableHours您可以使用过滤器查找所需的块,例如: const availableHours=[9,10,11,12,13,14]; 常量exArr1=[9,10,11,12,13,14] 常量exArr2=[11,12] 函数getStartTimesarr,已获取{ 返回arr.filteritem,index=>index!=availableHours.length-1 &&!take.includeItem &&!已完成。包括可用小时数[索引+1] } console.loggetStartTimesavailableHours,exArr1 console.loggetStartTimesavailableHours,exArr2如果您想使用Array.prototype.reduce 这里是一个以更实用的方式定义的解决方案 const fullyBooked=可用,已预订=> !预订,减少 //减速机将反向阵列的预定小时数归零 累加器,currentValue=>累加器[currentValue]=0,累加器, //初始值是可用时间的倒数,如果可用,则为1和0的1数组 可用 累加器2,当前值2=>累加器2[currentValue2]=1,累加器2, 新阵列25.0 一些 //如果连续两小时可用,则未完全预订 值,索引,数组=>值和数组[索引+1] ; 控制台。日志记录[9,10,11,12,13,14],[9,10,11,12,13,14]; 控制台。日志记录了[9,10,11,12,13,14],[9,10,11,12,13]; 控制台。日志记录了[9,10,11,12,13,14],[10,11,12,13,14]; 控制台。日志记录了[9,10,11,12,13,14],[9,10,13,14];
控制台。日志记录了[9,10,11,12,13,14],[9,11] 这也不使用reduce,但它会正确地过滤东西,我特别喜欢将函数分离出来,以获得更可读/分段的代码,而不是将所有逻辑推到一个reducer中 可利用常数={ 9:对, 10:对, 11:是的, 12:是的, 13:是的, 14:对, }; 常量exArr1=[9,10,11,12,13,14]; 常数exArr2=[10,11,12,13]; 常量exArr3=[10,11]; 功能剩余小时数{ const stillAvailable=Object.assign{},allAvailable; hours.forEachhour=>{ 删除可用时间[小时]; }; 返回Object.keystallavailable; } 函数有连续小时可用{ 如果可用小时数。长度<2{ 返回false; } 返回时数可用。空翻时数,索引=>{ 如果索引