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

实现按星期几顺序展示数组消息的脚本遇阻求助

实现按星期顺序展示消息的脚本方案

嘿,看起来你已经搭好每天消息的基础框架了,卡在获取当前日期匹配对应数组这一步对吧?我来帮你把剩下的部分补全,顺便给你优化下代码结构,让后续维护更方便~

第一步:优化消息存储结构

你现在单独定义了每天的数组,其实可以把它们整合到一个对象里,这样通过星期几的索引就能快速匹配,比一个个变量找更高效:

// 用对象存储每天的消息,键对应Date.getDay()的返回值(0=周日,6=周六)
const dailyMessages = {
  0: ['周日消息1', '周日消息2', '周日消息3', '周日消息4'],
  1: ['周一消息1', '周一消息2', '周一消息3', '周一消息4'],
  2: ['周二消息1', '周二消息2', '周二消息3', '周二消息4'],
  3: ['周三消息1', '周三消息2', '周三消息3', '周三消息4'],
  4: ['周四消息1', '周四消息2', '周四消息3', '周四消息4'],
  5: ['周五消息1', '周五消息2', '周五消息3', '周五消息4'],
  6: ['周六消息1', '周六消息2', '周六消息3', '周六消息4']
};

如果你不想改动原来的变量定义,也可以用一个映射表来关联:

// 保留你原来的变量定义
let daySun = ['msg1','msg2','msg3','msg4']; 
let dayMon = ['msg1','msg2','msg3','msg4']; 
let dayTue = ['msg1','msg2','msg3','msg4']; 
let dayWed = ['msg1','msg2','msg3','msg4']; 
let dayThu = ['msg1','msg2','msg3','msg4']; 
let dayFri = ['msg1','msg2','msg3','msg4']; 
let daySat = ['msg1','msg2','msg3','msg4']; 

// 建立星期索引和对应数组的映射
const dayMap = {
  0: daySun,
  1: dayMon,
  2: dayTue,
  3: dayWed,
  4: dayThu,
  5: dayFri,
  6: daySat
};

第二步:获取当天的消息数组

用new Date().getDay()就能拿到当前星期几的索引(0到6),然后从我们的存储结构里取出对应的消息数组:

// 获取当前星期几的索引
const todayIndex = new Date().getDay();
// 取出当天的消息数组,加个默认空数组避免报错
const todayMessages = dailyMessages[todayIndex] || [];
// 如果用你原来的变量+映射表,就换成下面这句
// const todayMessages = dayMap[todayIndex] || [];

第三步:按顺序展示消息

这里给你两种常用的展示方式,你可以根据需求选:

方式1:自动轮播展示(每隔一段时间显示一条)

适合需要自动依次弹出消息的场景,比如通知类:

function showMessagesInOrder(messages, interval = 2000) {
  let currentIndex = 0;
  
  const showNextMsg = () => {
    if (currentIndex < messages.length) {
      // 这里替换成你实际的展示逻辑,比如更新DOM弹窗、控制台输出等
      console.log(`当前消息:${messages[currentIndex]}`);
      currentIndex++;
      // 间隔指定时间后展示下一条
      setTimeout(showNextMsg, interval);
    } else {
      console.log('今日所有消息已展示完毕!');
    }
  };
  
  // 启动轮播
  showNextMsg();
}

// 调用函数开始展示当天消息
showMessagesInOrder(todayMessages);

方式2:依次插入到页面DOM中

适合在网页上按顺序显示消息的场景:

// 假设页面上有个用来放消息的容器
const messageContainer = document.getElementById('message-container');

todayMessages.forEach((msg, index) => {
  // 每条消息延迟index*2000毫秒出现,实现依次展示的效果
  setTimeout(() => {
    const msgElement = document.createElement('div');
    msgElement.className = 'message-item'; // 可以加样式类
    msgElement.textContent = msg;
    messageContainer.appendChild(msgElement);
  }, index * 2000);
});

这样整个脚本就完整啦,你可以根据自己的实际需求调整展示逻辑和时间间隔~

内容的提问来源于stack exchange,提问作者mrs68tm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:35:52