处理日期数组判断场景,如何减少if语句的使用?
简化日期检查逻辑的几种方法
可以用以下几种方式去掉冗余的if语句,让代码更简洁易维护:
方法一:遍历完整星期列表做统一判断
先定义包含所有星期几的数组,然后通过循环遍历每个星期几,统一判断是否存在于目标数组中,符合条件就打印提示:
callDays(){ const days: string[]=['Sunday','Monday','Wednesday','Thursday','Friday','Saturday']; // 定义完整的星期列表 const allWeekDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; allWeekDays.forEach(day => { if(days.includes(day)){ console.log(`${day} is included`); } }); }
这样不管要检查多少个日期,只需要维护allWeekDays数组即可,不用重复写if判断。
方法二:用Set提升查询效率
如果目标数组days的元素数量较多,数组的includes方法性能会稍差,这时可以把days转换成Set,利用Set的has方法更快的查询速度:
callDays(){ const days: string[]=['Sunday','Monday','Wednesday','Thursday','Friday','Saturday']; const daySet = new Set(days); const allWeekDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; allWeekDays.forEach(day => { if(daySet.has(day)){ console.log(`${day} is included`); } }); }
这种方式在数据量大的时候优势更明显,同时也能避免重复的if语句。
方法三:直接遍历目标数组(按需选择)
如果你的需求只是打印所有存在于days中的日期提示,不需要检查每一个固定星期几,也可以直接遍历days数组:
callDays(){ const days: string[]=['Sunday','Monday','Wednesday','Thursday','Friday','Saturday']; // 去重(如果需要避免重复打印) const uniqueDays = [...new Set(days)]; uniqueDays.forEach(day => { console.log(`${day} is included`); }); }
这种方式代码最简洁,但只适用于不需要检查“缺失的日期”的场景,和你原本的逻辑略有差异,按需选择即可。
内容的提问来源于stack exchange,提问作者pja
相关产品推荐
相关产品推荐

