ракета пролетела всю длину экрана и вышла за пределы экрана(тут мой скрипт при помощи splice удаляет ракету из массива ракет)
Не удаляет. Нет у вас там кода, который такое делает. Есть код отвечающий за перемещение - с проверкой достижения границы экрана, и никакой ветки else, в которой и должно происходить удаление, там нет. Есть удаление ракеты при столкновении с кораблём. Удаления при выходе за границы экрана нет. Нет его. НЕ-ТУ.
А уж splice внутри forEach - за такое не грех и руки оборвать.
Проверяем, не вышла ли ракета за границы элемента (левую или правую), если да - удаляем, нет - двигаем:
for (let i = this.rockets.length; i--; ) {
const rocket = this.rockets[i];
if (rocket.type === 'right' && this._isCollideFlyLeft(rocket)) {
this.flyLeft.energy -= 10;
this.rockets.splice(i, 1);
} else if (rocket.type === 'left' && this._isCollideFlyRight(rocket)) {
this.flyRight.energy -= 10;
this.rockets.splice(i, 1);
} else if (
rocket.xCoord + rocket.width >= this.fieldEl.offsetWidth ||
rocket.xCoord <= 0
) {
this.rockets.splice(i, 1);
} else {
rocket.move();
}
}