【发布时间】:2017-05-10 16:20:01
【问题描述】:
我最近遇到了这个问题,在任何地方都找不到好的答案(因此提出了这个问题)。
我想在到达终点后重新开始循环,但只循环有限的次数。
在这个特定的上下文中,我有一个星期的数组,我想使用 Date.getDay() 显示从一周中的今天开始接下来 7 天的天的名称,它返回一个从 0 开始的值(星期日) 到 6(星期六)。我可以创建一个包含接下来 7 天名称的数组,但由于当前循环,我一直跳过一个。这是我到目前为止所得到的。
我的预期输出是:
['friday', 'saturday', 'sunday', 'monday', 'tuesday', 'wednesday', 'thursday']
const dayNames = [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
];
const rawDate = new Date();
let dayNum = rawDate.getDay();
const week = [];
for (let i = 0; i < 6; i++) {
if (dayNum + 1 === 7) {
dayNum = 0;
for (j = 0; j < todayNum; j++) {
week.push(dayNames[dayNum])
dayNum++
}
week.push(dayNames[dayNum]);
dayNum++
} else {
week.push(dayNames[dayNum + 1]);
dayNum++;
}
}
console.log(week);
我确实看到我的“for”中的“if”是跳过的原因,但我似乎无法弄清楚如何解决。谢谢大家
【问题讨论】:
-
我建议更新您的示例以使用将产生预期输出的特定日期。这样,如果有人明天看到这个问题,他们仍然会得到预期的输出。你可以做
const rawDate = new Date(2017, 4, 10);... -
您可能希望在循环之外声明一个 var 以跟踪您已完成的 forloop 数量。然后在你的循环中,一旦它等于最终的循环交互,只需将你的交互器重置为 0。当您重置交互器时,增加您的 var 跟踪您运行 for 循环的总次数。测试您的退出条件 (totalForLoops == numberOfTimeYouWantItToRun) 并在其为真时返回。
-
我明白你在说什么,迈克。还有@Nina,这有效,但没有显示完整的 7 天......这是我的问题。
-
哇。这么多答案!我得和 Nina 一起去,因为他们是第一个,但你没事……我需要探索模数运算符。当然。
标签: javascript loops