Array.splice()
удалить заданное количество элементов, начиная с заданного индекса, и все остальные элементы сдвигаются вниз. Затем блок запоздалой мысли цикла for увеличивается на i
на 1. Таким образом, индекс пропускается.
Взгляните на:
let fiboArray = [ 1, 1, 2, 3, 5, 8 ];
// Array.splice() fails in forward for loops
for (let i = 0; i <= fiboArray.length ; i++) {
if (fiboArray[i] === 1) {
fiboArray.splice(i, 1);
}
}
console.log(fiboArray); // → [ 1, 2, 3, 5, 8 ]
Обратный цикл for может справиться с этим специальным поведением
let fiboArray = [ 1, 1, 2, 3, 5, 8 ];
// Array.splice() with backward for loops
for (let i = fiboArray.length - 1; i >= 0; i--) {
if (fiboArray[i] === 1) {
fiboArray.splice(i, 1);
}
}
console.log(fiboArray); // → [ 2, 3, 5, 8 ]
Но, как уже было сказано ранее: splice()
можно использовать только на Array
изменить
bubbles[i].splice(i, 1);
до
bubbles.splice(i, 1);