我最近遇到了这个问题,无法在任何地方找到一个好的答案(因此问题)。
我希望在到达终点后重新启动循环,但只循环有限次数。
在这个特定的上下文中,我有一周中的一系列天数,我希望使用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);
我确实看到了我的&#34; if&#34;在我的&#34; for&#34;是一个跳过的原因,但我似乎无法解决如何解决问题。谢谢你们所有
答案 0 :(得分:3)
您可以使用remainder operator %
作为正确的索引。
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++) {
week.push(dayNames[(dayNum + i) % dayNames.length]);
}
console.log(week);
答案 1 :(得分:1)
您不需要重新启动循环,只需使用模数运算符来包装数组索引。
您需要修正dayNames
的顺序,以便它与getDay()
返回的内容相对应。循环需要运行7次,而不是只需要6次才能完成整周。
const dayNames = [
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
];
const rawDate = new Date();
const dayNum = rawDate.getDay();
const week = [];
for (let i = dayNum; i < dayNum + 7; i++) {
week.push(dayNames[i % 7]);
}
console.log(week);
&#13;
答案 2 :(得分:0)
尝试使用%
运算符,只需一个循环:
const dayNames = [
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
];
const rawDate = new Date();
let dayNum = rawDate.getDay();
const week = [];
for (let i = 0; i < 7; i++) {
week.push(dayNames[dayNum++ % 7]);
}
console.log(week);
&#13;
另外,根据Date.prototype.getDate,星期一是零日。
答案 3 :(得分:0)
如果你想[明天,明天+ 1,......,明天+ 6]:
for (let i = 1; i <= 7; i++) {
week.push(dayNames[(dayNum + i) % 7]);
}
答案 4 :(得分:0)
您需要i < 7
才能获得整整7天,然后使用模数运算符%
返回除法的余数,单个for循环将为您提供所需的结果。
const dayNames = [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
];
const rawDate = new Date();
let dayNum = rawDate.getDay();
const week = [];
for (let i = 0; i < 7; i++) {
week.push(dayNames[(dayNum + i) % dayNames.length]);
}
console.log(week);