优化一下,repeatType 参数为(每周重复、隔日重复、隔周重复)
时间: 2024-09-28 09:06:14 浏览: 15
为了优化 `calculateEndDate` 函数,我们可以将 `repeatType` 参数的枚举值重构为更直观的形式,比如 "每周"、"隔日" 和 "隔周",以便用户更容易理解和使用。以下是优化后的代码:
```javascript
const RepeatTypes = {
WEEKLY: '每周',
BIWEEKLY: '隔日',
BIWEEKLY_ONCE: '隔周', // 添加一个新的选项表示每隔一周的一次
};
// 更新 getNextDate 函数的 switch 语句
switch (RepeatTypes[repeatType]) {
case '每周':
// ...(保持原有代码)
break;
case '隔日':
// ...(保持原有代码)
break;
case '隔周':
// ...(修改这里,例如:找到距离当前日期最近的下一个隔周一)
const nextMonday = Math.ceil((daysOfWeek.indexOf(1) - date.getDay()) % 7) + 1; // 1代表周一
const daysUntilNextClass = nextMonday - dayOfWeek;
return new Date(date.getTime() + daysUntilNextClass * 24 * 60 * 60 * 1000);
default:
throw new Error('无效的重复类型');
}
// 更新 calculateEndDate 函数中对 repeatType 的处理
if (repeatType === 'BIWEEKLY_ONCE') {
// 检查是工作日隔周,找到最近的周内的间隔时间
const nextWeekday = daysOfWeek.find(day => day <= 5); // 5代表周六或周日
// ...
}
// 更新 repeatType 参数的输入提示或文档说明,添加新的选项
```
现在,`repeatType` 变成了枚举形式,用户可以根据易于理解的文字选择相应的重复模式。在处理 `BIWEEKLY_ONCE` 时,我们找到了最近的周内对应的工作日作为重复基准。这样提高了代码的可读性和易用性。