При объединении массива вы изменяете массив, поэтому, когда у вас есть два, даже подряд, второй пропускается после того, как первый соединен
Теперь, предполагая, что вам нужно изменить массиввместо того, чтобы создавать новый массив, у вас есть две опции
Наиболее распространенная, для обработки массива от конца к началу, таким образом, мутации не путают, какой элемент вашей обработки
let arr = [6, 3, 19, 43, 12, 66, 43];
const removeEvenValues = arr => {
for (let i = arr.length - 1; i >= 0; --i) {
if(arr[i] % 2 === 0) arr.splice(i, 1);
};
};
removeEvenValues(arr);
console.log(arr);
Или, если вы хотите (неправильно) использовать метод массива - так как reduRight обрабатывает массив от конца к началу, вы можете использовать его как forEach (просто игнорируйтеаргумент «аккумулятор», и убедитесь, что вы инициализируете его (это то, что является нулем)
let arr = [6, 3, 19, 43, 12, 66, 43];
const removeEvenValues = arr => {
arr.reduceRight((_, num, i) => {
if(num % 2 === 0) arr.splice(i, 1);
}, null);
};
removeEvenValues(arr);
console.log(arr);