Javascript:在数组末尾重新启动循环一次
我最近遇到了这个问题,在任何地方都找不到一个好的答案(因此这个问题) 我想在到达终点后重新开始循环,但循环次数有限 在这个特定的上下文中,我有一个一周中的天数数组,我想使用Javascript:在数组末尾重新启动循环一次,javascript,loops,Javascript,Loops,我最近遇到了这个问题,在任何地方都找不到一个好的答案(因此这个问题) 我想在到达终点后重新开始循环,但循环次数有限 在这个特定的上下文中,我有一个一周中的天数数组,我想使用Date.getDay(),显示从一周中的今天开始的接下来7天的天数名称,它返回一个从0(星期日)到6(星期六)的值。我可以创建下一个7天的名称数组,但由于当前循环,我一直跳过一个。这是我到目前为止得到的 我的预期产出是: [‘星期五’、‘星期六’、‘星期日’、‘星期一’、‘星期二’、‘星期三’、‘星期四’] const da
Date.getDay()
,显示从一周中的今天开始的接下来7天的天数名称,它返回一个从0(星期日)到6(星期六)的值。我可以创建下一个7天的名称数组,但由于当前循环,我一直跳过一个。这是我到目前为止得到的
我的预期产出是:
[‘星期五’、‘星期六’、‘星期日’、‘星期一’、‘星期二’、‘星期三’、‘星期四’]
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);
const dayNames=[
“星期一”,
“星期二”,
“星期三”,
“星期四”,
“星期五”,
“星期六”,
“星期日”
];
const rawDate=新日期();
让dayNum=rawDate.getDay();
常数周=[];
for(设i=0;i<6;i++){
如果(dayNum+1==7){
dayNum=0;
对于(j=0;j
我确实看到我的“for”中的“if”是一个人跳过的原因,但我似乎不知道该如何解决。谢谢大家您可以使用正确的索引
const dayNames=[“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”];
const rawDate=新日期();
让dayNum=rawDate.getDay();
常数周=[];
for(设i=0;i<6;i++){
推送(dayNames[(dayNum+i)%dayNames.length]);
}
控制台日志(周)代码>您可以使用用于正确索引的
const dayNames=[“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”];
const rawDate=新日期();
让dayNum=rawDate.getDay();
常数周=[];
for(设i=0;i<6;i++){
推送(dayNames[(dayNum+i)%dayNames.length]);
}
控制台日志(周)代码>您不需要重新启动循环,只需使用模运算符包装数组索引即可
您需要修正dayNames
的顺序,使其与getDay()
返回的内容相对应。循环需要运行7次,而不仅仅是6次才能完成整个星期
const dayNames=[
“星期日”,
“星期一”,
“星期二”,
“星期三”,
“星期四”,
“星期五”,
“星期六”
];
const rawDate=新日期();
const dayNum=rawDate.getDay();
常数周=[];
for(设i=dayNum;i 控制台日志(周)代码>您不需要重新启动循环,只需使用模运算符包装数组索引即可
您需要修正dayNames
的顺序,使其与getDay()
返回的内容相对应。循环需要运行7次,而不仅仅是6次才能完成整个星期
const dayNames=[
“星期日”,
“星期一”,
“星期二”,
“星期三”,
“星期四”,
“星期五”,
“星期六”
];
const rawDate=新日期();
const dayNum=rawDate.getDay();
常数周=[];
for(设i=dayNum;i 控制台日志(周)代码>尝试使用%
运算符和一个循环:
const dayNames=[
“星期日”,
“星期一”,
“星期二”,
“星期三”,
“星期四”,
“星期五”,
“星期六”
];
const rawDate=新日期();
让dayNum=rawDate.getDay();
常数周=[];
for(设i=0;i<7;i++){
推送(dayNames[dayNum++%7]);
}
控制台日志(周)代码>尝试使用%
运算符和一个循环:
const dayNames=[
“星期日”,
“星期一”,
“星期二”,
“星期三”,
“星期四”,
“星期五”,
“星期六”
];
const rawDate=新日期();
让dayNum=rawDate.getDay();
常数周=[];
for(设i=0;i<7;i++){
推送(dayNames[dayNum++%7]);
}
控制台日志(周)代码>如果您想要[明天,明天+1,…,明天+6]:
for (let i = 1; i <= 7; i++) {
week.push(dayNames[(dayNum + i) % 7]);
}
for(让i=1;i如果你想[明天,明天+1,…,明天+6]:
for (let i = 1; i <= 7; i++) {
week.push(dayNames[(dayNum + i) % 7]);
}
for(设i=1;i您需要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);
const dayNames=[
“星期一”,
“星期二”,
“星期三”,
“星期四”,
“星期五”,
“星期六”,
“星期日”
];
const rawDate=新日期();
让dayNum=rawDate.getDay();
常数周=[];
for(设i=0;i<7;i++){
推送(dayNames[(dayNum+i)%dayNames.length]);
}
控制台日志(周);
您需要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);
const dayNames=[
“星期一”,
“星期二”,
“星期三”,
“星期四”,
“星期五”,
“星期六”,
“星期日”
];
const rawDate=新日期();
让dayNum=rawDate.getDay();
常数周=[];
for(设i=0;i<7;i++){
推送(dayNames[(dayNum+i)%dayNames.length]);
}
控制台日志(周);
我建议更新您的示例,使用一个特定的日期来生成您的预期输出。这样,如果有人明天看到这个问题,他们仍然会得到预期输出。您只需执行const rawDate=new date(2017,4,10);
…您希望在循环外部声明一个var,以跟踪已完成的forloop的数量。然后在循环中,只要将interator重置为0,直到它等于最终的循环迭代。重置interator时,将var tracking增加到运行forloop的总次数。测试退出条件(totalForLoops==numberoftimeyouwantitorun)并在其为真时返回。我知道你在说什么,mike。还有@Nina,这很有效,但它不显示完整的7天。。。