如何用JavaScript实现获取距离指定下一个星期几天数的函数?
解决方案
首先补全缺失的核心逻辑与定义,以下是完整的可运行实现代码:
function howFarIs(day) { // 定义标准星期数组,索引对应Date.getDay()返回值(0=周日,1=周一…6=周六) const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; // 大小写不敏感匹配,获取标准星期名称 const targetDay = days.find(d => d.toLowerCase() === day.toLowerCase()); const targetIndex = days.indexOf(targetDay); // 获取今天的星期索引 const todayIndex = new Date().getDay(); // 计算距离下一个目标星期的天数,兼容目标在今天前后的情况 const daysLeft = (targetIndex - todayIndex + 7) % 7; // 返回对应格式结果 if (daysLeft === 0) { return `Hey, today is ${targetDay} =)`; } else { return `It's ${daysLeft} day(s) left till ${targetDay}.`; } }
关键逻辑说明
- 大小写兼容匹配:通过
toLowerCase()统一转换输入与标准星期名称,确保'friday'、'FRIDAY'这类输入都能匹配到'Friday'。 - 通用天数计算:
(targetIndex - todayIndex + 7) % 7的公式无需分支判断,就能处理两种场景:- 目标星期在今天之后(如周四→周五),直接得到间隔天数;
- 目标星期在今天之前(如周四→周三),自动计算出到下一周该星期的间隔天数。
- 格式合规输出:直接使用匹配到的标准星期名称(首字母大写),满足输出格式要求。
测试示例
// 假设调用当天为10月22日(周四,索引4) howFarIs('friday'); // 返回 "It's 1 day(s) left till Friday." howFarIs('Thursday'); // 返回 "Hey, today is Thursday =)" howFarIs('sunday'); // 返回 "It's 3 day(s) left till Sunday."
内容的提问来源于stack exchange,提问作者Taras Levchuk
相关产品推荐
相关产品推荐

