Ich versuche alle geraden Zahlen aus dem Array zu löschen, aber es löscht nicht alle. nicht sicher, warum
%Vor% console.log(arr);
gibt dies - [3, 45, 7, 56, 345] statt dessen [3, 45, 7, 345]
Irgendwelche Ideen?
Wenn du 88 löschst, bewegt sich das folgende 56 um eine Position nach oben, und deine Schleife überspringt es (es tut nur i++
).
Sie müssen vorsichtig sein, wenn Sie ein Array aktualisieren, während Sie darüber iterieren.
Sie könnten das Array in diesem Fall rückwärts durchlaufen (beginnen Sie am Ende, machen Sie i--
). Abhängig davon, wie Spleiß implementiert wird, könnte dies sogar ein bisschen schneller sein (möglicherweise werden weniger Array-Elemente kopiert).
Die Länge Ihres Arrays ändert sich, wenn Sie Elemente daraus löschen.
Ich würde vorschlagen, Array.prototype.filter zu verwenden dies (was leicht für IE & lt; = 8 shimmed ist):
%Vor%Sie durchlaufen Ihr Array über i, das jedes Mal inkrementiert wird. Nachdem es 88 erreicht hat, spleißt es es aus und erhöht immer noch das Array, welches die 56 überspringt, das nächste wird sich auf 34 beziehen.
Sie müssen entweder nicht i erhöhen, wenn Sie spleißen, oder wenn Sie spleißen, einfach i -;
Tags und Links javascript arrays