Показать сообщение отдельно
  #4 (permalink)  
Старый 14.03.2018, 12:25
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,797

for корректно работает.
Когда вы удаляете элемент из массива, то его длинна (и кол-во итераций цикла) уменьшаются, при этом счетчик (i) уже указывает на следующий после удаленного элемент массива, из-за этого такой результат.
Для решения проблемы можно воспользоваться методом filter массивов либо в цикле заполнить новый массив необходимыми значениями, а после цикла старый заменить новым.

Пример с методом "filter":
var a = [1, 2, 2, 2, 2, 3, 4].filter(val=>val%2!=0);
alert(a);   // [1, 3]
Ответить с цитированием