Q:

Удаление конкретных пар элментов из массива

let arr = ['0', '1', '2', '0', '1', '2'];
for (let i = 0; i < arr.length; i++) {
  if (arr[i] === '1' && arr[i + 1] === '2') {
    arr.splice(arr[i], 2);
  }
}
console.log(arr); //["0", "2"]

Почему в итоге остается массив ['0', '2'], если по условию должны удалиться два элемента подряд с arr[i] === '1', а это '1' и '2', т.е. по итогу должно остаться ['0', '0']; 

A:

Если циклом проходите от первого элемента к последнему, то когда вырезается один из элементов - индексация смещается. Правильно в таком случае проходить циклом в обратном направлении.
Плюс еще arr.splice первым аргументом принимает индекс элемента с которого начинать вырезать. А вы передаете значение arr[i];

let arr = ['0', '1', '2', '0', '1', '2'];

for (let i = arr.length - 1; i > 0; --i) {   //for (let i = 0; i < arr.length; i++) {    
  if (arr[i] === '1' && arr[i + 1] === '2') {
    arr.splice(i, 2);
  }
}

console.log(arr); 

