如何修复JS代码:使输入的星期显示在控制台输出末尾
修正星期输出序列的代码问题
问题分析
现有代码会把输入的星期放在输出序列最前端,不符合“输入星期显示在序列最后”的需求——原逻辑是从匹配到输入星期开始,就将后续所有元素(含输入星期)加入结果数组。另外原代码还存在大小写匹配漏洞:首次输入未转小写,可能导致Monday这类正常输入被误判为无效。
修正后的代码
const daysOfWeek = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]; // 首次输入即转小写,统一格式避免匹配失败 let currentDay = prompt("Enter day of week:").toLowerCase(); // 循环校验输入有效性,输入后转小写 while (!daysOfWeek.includes(currentDay)) { currentDay = prompt("Invalid day. Enter day of week:").toLowerCase(); } // 定位输入星期在数组中的索引 const currentIndex = daysOfWeek.indexOf(currentDay); // 截取输入星期之后的所有天数,再将输入星期追加到末尾 const daysLeft = [...daysOfWeek.slice(currentIndex + 1), currentDay]; console.log(daysLeft);
逻辑说明
- 修复大小写问题:首次输入就转换为小写,确保和数组内元素格式统一,避免不必要的无效输入提示。
- 调整序列生成逻辑:
- 用
indexOf获取输入星期在数组中的位置。 - 用
slice(currentIndex + 1)提取输入星期之后的所有天数(比如输入monday时,会得到tuesday到sunday的数组)。 - 最后将输入的星期添加到截取结果末尾,得到符合需求的输出序列。
- 用
内容的提问来源于stack exchange,提问作者user20086268
相关产品推荐
相关产品推荐

