Почему не срабатывает цикл при i = i++?
Читайте как работает постфиксная инкрементация
https://learn.javascript.ru/operators#inkrement-de...

У вас счётчик не меняетcя от этого и бесконечный цикл.

Какой смысл результат инрементации присваивать в эту же переменную? Операция с побочным эффектом и меняет саму переменную. Нет смысла присваивать.
А почему функцией перебора forEach() не пользуетесь?
Не дошёл до изучения