请优化以下代码n--for-let-i-=-1;-i-=-days;-i++-n----------datesetDatei;--设置月份的日期n----------let-weekDay-=-dategetDay;--获取星期几。-返回0-到-6星期日为-0、星期六为-6。nn----------if-weekDay--0-&&-weekDay--6--周一到周五n------------if-worklength-=-overtimeday-n---------------第几个工作日-从0
以下是优化后的代码:
const weekdays = [1, 2, 3, 4, 5]; // 周一到周五 const holidayTimeSet = new Set(holiDayTimeList); const weekDayTimeSet = new Set(weekDayTimeList); const work = [];
for (let i = 1; i <= days; i++) { date.setDate(i); const weekDay = date.getDay();
if (weekdays.includes(weekDay)) { // 周一到周五 if (work.length <= overtimeday && !holidayTimeSet.has(moment(date).format("YYYY-MM-DD"))) { work.push(date.toLocaleDateString()); } } else { // 周六、周日 if (weekDayTimeSet.has(moment(date).format("YYYY-MM-DD")) && work.length <= overtimeday) { work.push(date.toLocaleDateString()); } } }
优化点:
- 使用数组代替 if 条件判断中的范围判断,提高代码可读性。
- 用 Set 数据结构存储假期和工作日时间列表,提高查找效率。
- 将重复使用的 moment(date).format("YYYY-MM-DD") 提取出来,减少重复代码。
- 减少 if 嵌套层数,提高代码可读性。
原文地址: http://www.cveoy.top/t/topic/rDa 著作权归作者所有。请勿转载和采集!