Хм, проверил — работает. При удалении да, всё ок, а вот при присвоении значений может пропустить какой-то индекс. Была такая тема года три назад, правда с ходу не нашёл

Смысл был в том, что при переборе for..in (или for each) дважды выводил один и тот же индекс и один всегда пропускал.