我正尝试使用模数每隔三次迭代增加date变量中的天数。
我认为我每三遍迭代就对了,但是这一天并没有增加1。我环顾四周,有很多建议使用date.setDate(date.getDate() + 1);
,这就是我正在尝试的方法,但事实并非如此。不能产生我想要的结果。它会增加一次,但是日期不会增加。
这是我尝试过的代码:
for (let i = 0; i < 10; i++) {
let date = new Date();
if (i % 3 == 0) {
date.setDate(date.getDate() + 1);
console.log(date);
}
}
答案 0 :(得分:1)
问题在于,您需要在循环的每次迭代中创建一个新的Date
对象。为了解决这个问题,您只需要像这样将date
的声明移出它即可:
let date = new Date();
for (let i = 0; i < 10; i++) {
if (i % 3 == 0) {
date.setDate(date.getDate() + 1);
console.log(date);
}
}
答案 1 :(得分:1)
在循环之外声明日期。您每次都在重置它。
let date = new Date();
for (let i = 0; i < 10; i++) {
if (i % 3 == 0) {
date.setDate(date.getDate() + 1);
console.log(date);
}
}
答案 2 :(得分:1)
这是因为每次循环时都要定义date
变量,将其移到外部
let date = new Date();
for (let i = 0; i < 10; i++) {
if (i % 3 == 0) {
date.setDate(date.getDate() + 1);
console.log(i, date);
}
}
答案 3 :(得分:1)
要实现所需的功能,请考虑将date
变量移出循环,如下所示。另请参阅以下代码段中的文档,以详细了解其工作原理和原因:
/*
Consider shifting "date" outside of loop. This
will give you a reference point on which the
increment can be accumulated during iteration
*/
let date = new Date();
for (let i = 0; i < 10; i++) {
if (i % 3 == 0) {
/*
Increment the day of the date object that
is outside of the loop. Because the date
object is defined outside of the loop, this
causes the increments to be "remembered"
between loop iterations
*/
date.setDate(date.getDate() + 1);
console.log(date);
}
}