以下是优化后的代码:

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()); } } }

优化点:

  1. 使用数组代替 if 条件判断中的范围判断,提高代码可读性。
  2. 用 Set 数据结构存储假期和工作日时间列表,提高查找效率。
  3. 将重复使用的 moment(date).format("YYYY-MM-DD") 提取出来,减少重复代码。
  4. 减少 if 嵌套层数,提高代码可读性。
请优化以下代码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

原文地址: http://www.cveoy.top/t/topic/rDa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录