You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过prompt输入星期后提取Sunday并将其作为一周最后一天输出到控制台?

修正JavaScript代码:确保Sunday始终作为一周最后一天输出

需求说明

通过prompt输入一周中的某一天后,输出以输入日期为起始、Sunday固定为最后一天的日期序列到控制台。

原代码存在的问题

  • 首次输入未转换为小写,若用户输入大写开头的日期(如Monday)会直接触发无效输入提示
  • 使用splice()修改原始数组,导致后续数组操作的数据源被破坏,结果可能不符合预期
  • 当输入Sunday时,会丢失该日期,输出结果不包含Sunday,违反需求

修正后的代码

function days() {
  // 定义原始星期数组,确保Sunday在末尾
  const daysOfWeek = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"];
  
  // 首次输入就转换为小写,避免大小写匹配问题
  let currentDay = prompt("Enter day of week:").toLowerCase();
  let dayNum = daysOfWeek.indexOf(currentDay);

  // 循环校验输入,直到输入有效日期
  while (dayNum < 0) {
    currentDay = prompt("Invalid day. Enter day of week:").toLowerCase();
    dayNum = daysOfWeek.indexOf(currentDay);
  }

  // 使用slice()代替splice(),不修改原始数组
  // 第一部分:从输入日期到数组末尾(包含Sunday)
  const fromCurrentToSunday = daysOfWeek.slice(dayNum);
  // 第二部分:从数组开头到输入日期的前一天(仅当输入日期不是Sunday时才需要)
  const beforeCurrentDay = dayNum !== 6 ? daysOfWeek.slice(0, dayNum) : [];

  // 合并两部分,确保Sunday始终在最后
  const daysLeft = fromCurrentToSunday.concat(beforeCurrentDay);

  console.log(daysLeft);
}

days();

修正要点说明

  • 输入处理优化:首次输入就调用toLowerCase(),统一大小写,避免因输入格式导致的匹配失败
  • 避免修改原数组:使用slice()替代splice(),slice()仅返回指定范围的新数组,不会修改原始数组,保证后续操作的数据源完整
  • 强制Sunday在末尾:拆分数组为「输入日到Sunday」和「输入日之前的日期」两部分,合并后Sunday自然处于结果数组的最后一位;当输入的是Sunday时,仅保留Sunday作为结果
  • 边界处理:针对输入Sunday的情况单独处理,避免添加多余的前置日期

内容的提问来源于stack exchange,提问作者M.S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 03:50:32