Wie kann ich leere Elemente aus einem Array in JavaScript entfernen?
Gibt es einen einfachen Weg, oder muss ich eine Schleife durchlaufen und sie manuell entfernen?
Wie kann ich leere Elemente aus einem Array in JavaScript entfernen?
Gibt es einen einfachen Weg, oder muss ich eine Schleife durchlaufen und sie manuell entfernen?
Zum Entfernen von Löchern sollten Sie Folgendes verwenden
arr.filter(() => true)
arr.flat(0) // New in ES2019
Zum Entfernen von Loch, Null und undefiniert:
arr.filter(x => x != null)
Zum Entfernen von löchrigen und falschen (null, undefiniert, 0, -0, 0n, NaN, "", false, document.all) Werten:
arr.filter(x => x)
arr = [, null, (void 0), 0, -0, 0n, NaN, false, '', 42];
console.log(arr.filter(() => true)); // [null, (void 0), 0, -0, 0n, NaN, false, '', 42]
console.log(arr.filter(x => x != null)); // [0, -0, 0n, NaN, false, "", 42]
console.log(arr.filter(x => x)); // [42]
Nota:
Löcher sind einige Array-Indizes ohne Elemente.
arr = [, ,]; console.log(arr[0], 0 in arr, arr.length); // undefined, false, 2; arr[0] is a hole arr[42] = 42; console.log(arr[10], 10 in arr, arr.length); // undefined, false, 43; arr[10] is a hole
arr1 = [1, 2, 3]; arr1[0] = (void 0); console.log(arr1[0], 0 in arr1); // undefined, true; a[0] is undefined, not a hole
arr2 = [1, 2, 3]; delete arr2[0]; // NEVER do this please console.log(arr2[0], 0 in arr2, arr2.length); // undefined, false; a[0] is a hole
Alle oben genannten Methoden geben eine Kopie des gegebenen Arrays zurück und ändern es nicht an Ort und Stelle.
arr = [1, 3, null, 4]; filtered = arr.filter(x => x != null); console.log(filtered); // [1, 3, 4] console.log(arr); // [1, 3, null, 4]; not modified
Tatsächlich können Sie ES6+
Methoden, nehmen Sie an, dass das Feld unten ist:
const arr = [1,2,3,undefined,4,5,6,undefined,7,8,undefined,undefined,0,9];
Und die Antwort könnte eine der beiden Möglichkeiten sein:
Erster Weg:
const clearArray = arr.filter(i => i); // [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
Zweiter Weg:
const clearArray = arr.filter(Boolean); // [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
const arr = [1,2,3,undefined,4,5,6,undefined,7,8,undefined,undefined,0,9]; console.log("arr.filter(i => i)", arr.filter(i => i)); console.log("arr.filter(Boolean)", arr.filter(Boolean));
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.