Чтобы было проще, можно работать не с самой датой в нужном формате, а с timestamp.И прибавлять в цикле не единицу к месяцу, а количество миллисекунд в месяце. То есть +n*24*60*60*1000, где n - количество дней в месяце (но это тоже будет та еще задача).
А в самом конце конвертировать полученный timestamp в нужный вам формат.
К сожалению, ненавижу работать с датами, и конкретно написать код не могу, но смысл вам должен быть понятен. Я бы делал именно так вероятнее всего.
P.S. Вспомнил. В php есть функция, которая преобразует строку в timestamp (
http://www.php.su/strtotime() ). То есть, можно строкой написать 19.04.2018 + 25 month, и она сама преобразует эту строку. Наверное, в js тоже есть нечто подобное. Проще этого наверное уже не придумать.