JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>

JavaScript

function buildQueue(startDate, numOfDays, daysToDisplay) {

  if (!startDate || !numOfDays || !daysToDisplay) {
    throw new Error('All params required!');
  }

  var num = numOfDays > daysToDisplay ? daysToDisplay : numOfDays;
  var div = Math.floor(daysToDisplay / num);
  var count = daysToDisplay;
  var rem = daysToDisplay % num;
  var n = 0;
  var i;
  
  var arr = [];
 
  for (i = 0; i <= daysToDisplay; i += num) {
 
    arr.push({
      startDate: moment(startDate, 'YYYYMMDD').add(i, 'days').format('YYYYMMDD'),
      numOfDays: numOfDays,
      count: i
    })

    if (rem === count) {
      break;
    }

    count -= num;

  }

  if (count > 0) {
    var leftover = daysToDisplay - arr[arr.length - 1].count;
    arr.push({
      startDate: moment(arr[arr.length - 1].startDate, 'YYYYMMDD').add(num, 'days').format('YYYYMMDD'),
      numOfDays: daysToDisplay % num,
      count: leftover + arr[arr.length - 1].count
    });
  }

  return arr;

}

//console.log(buildQueue(moment(), 80, 100));
console.log(buildQueue(moment(), 99, 100));
//console.log(buildQueue(moment(), 15, 100));
//console.log(buildQueue(moment(), 30, 100));
//console.log(buildQueue(moment(), 45, 100));