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?
Möglicherweise ist es einfacher, eine Schleife über Ihr Array zu ziehen und ein neues Array aus den Elementen zu erstellen, die Sie aus dem Array behalten möchten, als zu versuchen, eine Schleife zu ziehen und zu spleißen, wie es vorgeschlagen wurde, da die Änderung der Länge des Arrays, während es in einer Schleife geführt wird, Probleme verursachen kann.
Sie könnten etwa so vorgehen:
function removeFalsyElementsFromArray(someArray) {
var newArray = [];
for(var index = 0; index < someArray.length; index++) {
if(someArray[index]) {
newArray.push(someArray[index]);
}
}
return newArray;
}
Es gibt jedoch eine allgemeinere Lösung:
function removeElementsFromArray(someArray, filter) {
var newArray = [];
for(var index = 0; index < someArray.length; index++) {
if(filter(someArray[index]) == false) {
newArray.push(someArray[index]);
}
}
return newArray;
}
// then provide one or more filter functions that will
// filter out the elements based on some condition:
function isNullOrUndefined(item) {
return (item == null || typeof(item) == "undefined");
}
// then call the function like this:
var myArray = [1,2,,3,,3,,,,,,4,,4,,5,,6,,,,];
var results = removeElementsFromArray(myArray, isNullOrUndefined);
// results == [1,2,3,3,4,4,5,6]
Sie verstehen, was ich meine - Sie könnten auch andere Arten von Filterfunktionen haben. Wahrscheinlich mehr als Sie brauchen, aber ich war großzügig... ;)
Bei der Verwendung der am höchsten bewerteten Antwort oben, erstes Beispiel, erhielt ich einzelne Zeichen für Zeichenfolgenlängen größer als 1. unten ist meine Lösung für dieses Problem.
var stringObject = ["", "some string yay", "", "", "Other string yay"];
stringObject = stringObject.filter(function(n){ return n.length > 0});
Anstatt nicht zurückzugeben, wenn undefiniert, geben wir zurück, wenn length größer als 0 ist. Ich hoffe, das hilft jemandem da draußen.
Devuelve
["some string yay", "Other string yay"]
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.