Прежде всего, если ваша итерация выполняется над объектом, не используйте «i» в качестве переменной итерации, используйте prop или key, чтобы было ясно, что вы итерируете свойства, а не индексы.
Во-вторых, похоже, что вы можете просто отладить и выяснить, какой элемент в вашем объекте пуст. Без полного кода вам трудно помочь. Я думаю, что проблема в том, что вы удаляете, делая
obj.myProp = null;
Это означает, что цикл for in все еще будет перебирать это свойство. Однако, если вы используете
delete obj.myProp;
myProp не будет повторяться в цикле for in.