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?
Wenn die Verwendung einer Bibliothek eine Option ist, weiß ich, underscore.js hat eine Funktion namens compact() http://documentcloud.github.com/underscore/ es hat auch mehrere andere nützliche Funktionen im Zusammenhang mit Arrays und Sammlungen.
Hier ist ein Auszug aus der Dokumentation des Unternehmens:
_.compact(array)
Gibt eine Kopie des Arrays zurück, aus der alle falschen Werte entfernt wurden. In JavaScript sind false, null, 0, "", undefiniert und NaN alle falsch.
_.compact([0, 1, false, 2, '', 3]);
\=> [1, 2, 3]
@Alnitak
Eigentlich funktioniert Array.filter in allen Browsern, wenn Sie etwas zusätzlichen Code hinzufügen. Siehe unten.
var array = ["","one",0,"",null,0,1,2,4,"two"];
function isempty(x){
if(x!=="")
return true;
}
var res = array.filter(isempty);
document.writeln(res.toJSONString());
// gives: ["one",0,null,0,1,2,4,"two"]
Dies ist der Code, den Sie für IE hinzufügen müssen, aber Filter und funktionale Programmierung ist es wert, imo.
//This prototype is provided by the Mozilla foundation and
//is distributed under the MIT license.
//http://www.ibiblio.org/pub/Linux/LICENSES/mit.license
if (!Array.prototype.filter)
{
Array.prototype.filter = function(fun /*, thisp*/)
{
var len = this.length;
if (typeof fun != "function")
throw new TypeError();
var res = new Array();
var thisp = arguments[1];
for (var i = 0; i < len; i++)
{
if (i in this)
{
var val = this[i]; // in case fun mutates this
if (fun.call(thisp, val, i, this))
res.push(val);
}
}
return res;
};
}
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.