Also ... was Sie tun, ist das ursprüngliche Array numbers
durch ein neues Array mit den gefilterten Informationen zu ersetzen. Wenn Sie das ursprüngliche Array mutieren möchten, wird viel mehr Code benötigt. Der Grund dafür, dass Sie viel mehr Code benötigen, ist, dass Sie die Länge eines Arrays ändern, während Sie darüber hinwegschleifen, was eine schlechte Übung ist.
Um es zu tun, könnten Sie das Array einmal durchlaufen und alle Indizes finden, die einen Wert höher als 10 haben. Sobald Sie alle Indizes haben, können Sie sie überschleifen und diese Abschnitte ausschneiden Array.
Der folgende Code ist, wie Sie es tun könnten. Ich bin mir nicht sicher über am effizientesten, aber es ist ein Weg.
let numbers = [15, 5, 2, 1, 59, 29];
let badIndices = [];
numbers.forEach((val, idx) => {
if(val > 10) badIndices.push(idx);
});
badIndices = badIndices.reverse();
badIndices.forEach(i => numbers.splice(i, 1));
Sie die Reihenfolge des Indizes vor dem Spleißen, da sonst die Offset für die nachfolgenden Indizes aus sein werden umkehren wollen. Mit anderen Worten, Sie möchten das Spleißen vom Ende nach vorne beginnen. Andernfalls werden durch das Entfernen von vorne die nachfolgenden Indizes geändert, wodurch die Funktion ungültig wird.
Bitte erklären Sie, welche Nebenwirkung Sie sprechen. –
Sie können eine Variable nicht ohne Nebenwirkungen ändern, da eine Änderung Mutation erfordert. – Bergi
Alles, was Sie tun wollen, ist nicht den ursprünglichen * Wert * (das Array) mutieren, und Ihr Code tut das schon. Sie können mit Ihren Variablen tun, was Sie wollen, solange Sie sie lokal halten. – Bergi