2017-03-25 3 views

Antwort

3

Es ist, weil Sie den Eintrag im Index 0, löschen und verschieben i auf 1. Aber der Eintrag jetzt bei Index 0 ist auch 14. Sie Vergangenheit übersprungen haben es.

Entweder arbeiten Sie rückwärts, oder erhöhen Sie nicht i, wenn Sie einen Eintrag entfernen (von denen jeder das vorhandene Array ändert); oder erstellen Sie ein komplett neues Array über filter.

gehen rückwärts:

var numbers = [14, 14, 16, 25]; 
 
for (var i = numbers.length - 1; i >= 0; i--) { 
 
    if (numbers[i] === 14) { 
 
    numbers.splice(i,1); 
 
    } 
 
} 
 
console.log(numbers);

i nicht erhöht wird, wenn Sie einen Eintrag entfernen:

var numbers = [14, 14, 16, 25]; 
 
var i = 0; 
 
while (i < numbers.length) { 
 
    if (numbers[i] === 14) { 
 
    numbers.splice(i,1); 
 
    } else { 
 
    ++i; 
 
    } 
 
} 
 
console.log(numbers);

Erstellen eines neuen Arrays über filter:

var numbers = [14, 14, 16, 25]; 
 
numbers = numbers.filter(function(value) { return value != 14; }); 
 
console.log(numbers);

Verwandte Themen