如何将数组中对应当日的星期元素替换为'Today'?
问题分析与修复方案
嘿,我一眼就瞅出你代码里的问题啦!你现在的代码逻辑走偏了——你先把weekdays[day]赋值给了dayCal,这时候dayCal是单个字符串(比如当周一是当天时,它就是'Mon'),你再去修改dayCal[6],本质上是在操作字符串的第7个字符(但字符串长度根本没那么长),而且你还硬写了索引6,这就导致每次都把数组最后一个元素改成'Today',完全没关联到当日的索引。
正确的实现思路
要实现把数组中对应当日的元素替换为'Today',核心是找到当日对应的数组索引,然后直接修改数组的该位置元素:
new Date().getDay()返回的数字正好对应你weekdays数组的索引(0=Sun,1=Mon,…,6=Sat),完美匹配- 如果不想修改原数组,可以先复制一份再修改(推荐,避免影响其他地方使用原数组)
修正后的代码
// 定义星期数组 var weekdays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; // 获取当前日期 var d = new Date(); // 获取当日对应的数组索引(0-6) var dayIndex = d.getDay(); // 复制原数组(如果允许修改原数组,这步可以省略,直接操作weekdays) var todayCal = [...weekdays]; // 将对应索引的元素替换为'Today' todayCal[dayIndex] = 'Today'; // 输出结果看看 console.log(todayCal);
代码解释
- 用扩展运算符
[...weekdays]复制原数组,这样原数组weekdays不会被修改,保证数据纯净 - 直接用
dayIndex(当日对应的索引)定位到数组元素,替换成'Today',精准对应当日 - 最后输出的
todayCal就是你想要的替换后的数组啦
内容的提问来源于stack exchange,提问作者Hema Nandagopal
相关产品推荐
相关产品推荐

