Javascript: Lista mesi tra una data e un’altra

Abbiamo ad esempio la data x che è 1 Gennaio 2017 e la data y che è 1 Dicembre 2018. Se vogliamo avere la lista dei mesi tra queste due dati possiamo procedere in questo modo

var start      = StartDate.split('-');
var end        = EndDate.split('-');

var startYear  = parseInt(start[0]);
var endYear    = parseInt(end[0]);

var dates      = [];

for(var i = startYear; i <= endYear; i++) {
	var endMonth = i != endYear ? 11 : parseInt(end[1]) - 1;
	var startMon = i === startYear ? parseInt(start[1])-1 : 0;
	for(var j = startMon; j <= endMonth; j = j > 12 ? j % 12 || 11 : j+1) {
	  //var month = j+1; // number of mouth
	  var cloneMouthValue = j+1 + "-" + i; // number of mouth
	  var cloneMouthLabel = dateHash[j+1] + " " + i; // number of mouth
	  //console.log("------------>"+cloneMouthValue);
	  //console.log("------------>"+cloneMouthLabel);
	  //var displayMonth = month < 10 ? '0'+month : month;
	  //dates.push([i, displayMonth, '01'].join('-'));
	  //console.log("------------------------------------------->" + i) // year
	  cloneMouth.push({value:cloneMouthValue,label:cloneMouthLabel});
	  //cloneMouth.push({value:'02',label:'Febbraio'});
	}
  }

console.log(cloneMouth);