Question: I need to add days to a date in Javascript inside of a loop.

Currently, I have this -

```
var occurences = 2;
var start_date = "10/2/2020";
for(i=0; i < occurences; i++){
  var repeat_every = 2; //repeat every number of days/weeks/months
  var last = new Date(start_date);
  var day =last.getDate() + repeat_every;
  var month=last.getMonth()+1;
  var year=last.getFullYear();
  var fulldate = month + '/' + day + '/' + year;
  console.log(fulldate);
}

```

However, this outputs 10/4/2020 twice. I know the issue is because in the 2nd iteration of the loop it again simply adds 2 to the date 10/2/2020, is there a way on the subsequent iterations I can add 2 to the previous result?

Thank you!

Answer: 
You can use a multiple of your interval and then use `last.setDate( last.getDate() + repeat_every )` to add days and get the correct month and year:

```js
var occurences = 20;
var start_date = "10/2/2020";
for(i=1; i <= occurences; i++){
  var repeat_every = 2*i; //repeat every number of days/weeks/months
  var last = new Date(start_date);
  last.setDate( last.getDate() + repeat_every );
  console.log( `${last.getDate()}/${last.getMonth()+1}/${last.getFullYear()}` );
}
```
I would separate the generation of the days from their formatting / logging. Here we have a function that collects `count` instances of incrementally adding `n` days to a date, returning a collection of `Date` objects:

```js
const everyNDays = (n, count, start = new Date()) => {
  const y = start.getFullYear(), m = start.getMonth(), d = start.getDate()
  return Array.from({length: count}, (_, i) => new Date(y, m, d + (i + 1) * n))
}

const formatDate = (date) =>
  date .toLocaleDateString ()

console .log (
  everyNDays (2, 20) .map (formatDate)
)
// or everyNDays (2, 20) .forEach (date => console .log (formatDate (date)))
```

```css
.as-console-wrapper {max-height: 100% !important; top: 0}
```

(If you don't pass a start date, it uses the current date.)

We then `map` the simple `formatDate` function over these dates to get an array of strings.

If you would rather start with the current date, you can simply replace `new Date(y, m, d + (i + 1) * n)` with `new Date(y, m, d + i * n)`.