在JavaScript中循环几周

问题描述 投票:2回答:3

所以我尝试过来自W3Schools的this example,我就明白了。

function day() {
  var day = new Date();
  var week = new Array(
    "Sunday",
    "Monday",
    "Tuesday",
    "Wednesday",
    "Thursday",
    "Friday",
    "Saturday"
  );

  for (i = 0; i < week.length; i++) {
    console.log(week[day.getDay(i) + 1]);
  }

}

day();

“+1”会让你明天约会,但是当你到达循环结束时会发生什么?说今天是星期五,我想要三天出去,周一回来“未定义”,因为它已经过了循环。

有没有办法开始循环?从我所看到的,继续/中断不起作用。

关于如何获得今天的日期和接下来的几个更好的建议,以便循环不会中断?

javascript arrays loops
3个回答
0
投票

i不会更改日期,因为.getDay()不会处理任何参数。使用模数运算符%来包裹一周中的7天。运行下面的代码段,看它是否有效。

function day() {
  var day = new Date();
  var week = new Array(
    "Sunday",
    "Monday",
    "Tuesday",
    "Wednesday",
    "Thursday",
    "Friday",
    "Saturday"
  );

  for (i = 0; i < 14; i++) {
    console.log(week[(day.getDay() + 1 + i) % 7]);
  }
}

day();

0
投票

我不会使用数组来查找星期几。使用moment.js等日期库可以更好地满足您的特定情况。

a = moment()
a.format()
"2017-12-22T13:52:55+08:00"
a.add(3,'days')
a.format()
"2017-12-25T13:52:55+08:00"
a.format("dddd")
"Monday"

数组非常有用,但我不会用它来查找它是哪一天。如果你想了解更多有关数组的信息,MDN有一个相当不错的指南。事实上,对于大多数事情来说,它比W3Schools更好。


0
投票

使用'%'运算符。

function day() {
var day = new Date();
var week = new Array(
    "Sunday",
    "Monday",
    "Tuesday",
    "Wednesday",
    "Thursday",
    "Friday",
    "Saturday"
);

for (i=0; i<week.length; i++) {
     var num = (day.getDay(i)+3)%7;
    console.log(week[num]);
}

}
© www.soinside.com 2019 - 2024. All rights reserved.