День увеличения на 1 каждую третью итерацию - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь увеличивать дни в переменной даты каждую третью итерацию, используя модуль.

Я думаю, что я выполнил каждую третью итерацию правильно, но день не увеличивается на 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);
  }
}

Ответы [ 4 ]

0 голосов
/ 24 января 2019

Чтобы достичь того, что вам нужно, рассмотрите возможность перемещения переменной 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);
  }
}
0 голосов
/ 24 января 2019

Объявите дату вне вашего цикла.Вы сбрасываете его каждый раз.

let date = new Date();
for (let i = 0; i < 10; i++) {
  if (i % 3 == 0) {
    date.setDate(date.getDate() + 1);
    console.log(date);
  }
}
0 голосов
/ 24 января 2019

Это потому, что вы определяете свою 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);
  }
}
0 голосов
/ 24 января 2019

Проблема в том, что вы создаете новый объект 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);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...