Удаление из массива дело в некотором роде нетривиальное.

Если обходить элементы массива в цикле и удалять ненужные по индексу, то происходит следующее:

Мы удаляем, например, элемент с индексом [3]. Потом в цикле должны перейти на элемент с индексом [4], но этого не происходит. Потому что элемент, у которого был индекс [4], после удаления предыдущего, автоматически получает индекс [3] и в цикл уже не попадает.

Для исключения данной ситуации используют обход в цикле снизу вверх, то есть от последнего элемента к первому. Но есть ещё один способ, который я иногда использую в работе:

Можно создать новый массив и поместить в него нужные элементы. Далее старый массив очистить и в дальнейшем использовать вместо него новый.