внутри другого выполняется только один раз - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть следующий код для создания всех возможных интервалов между двумя датами:

var minStart = new Date(2019, 10, 1);
var maxStart = new Date(2019, 10, 3);
var minStop = new Date(2019, 10, 20);
var maxStop = new Date(2019, 10, 22);

for (var i = minStart; i <= maxStart; i.setDate(i.getDate() + 1)) {
  for (var v = minStop; v <= maxStop; v.setDate(v.getDate() + 1)) {
    console.log(moment(i).format('DD/MM') + ' - ' + moment(v).format('DD/MM'));
  }
}

Я ожидаю получить следующий результат:

01/11 - 20/11
01/11 - 21/11
01/11 - 22/11
02/11 - 20/11
02/11 - 21/11
02/11 - 22/11
03/11 - 20/11
03/11 - 21/11
03/11 - 22/11

, но получаю только:

>01/11 - 20/11
>01/11 - 21/11
>01/11 - 22/11

Я отлаженкод, помещая больше console.log() выходных данных, и получается, что внутренний цикл запускается только один раз. Любая идея, почему это происходит?

Вот быстрый JSFiddle (без библиотеки moment, которую я использую только для форматирования).

1 Ответ

2 голосов
/ 04 ноября 2019

Проблема в том, что вы мутируете объекты, в конце первого внешнего цикла, minStop будет иметь ту же дату, что и maxStop. Чтобы решить эту проблему, используйте что-то вроде этого: var v = new Date(minStop)

...