1650 Stimmen

Leere Elemente aus einem Array in Javascript 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?

22voto

c4urself Punkte 4027

Mit Underscore/Lodash:

Allgemeiner Anwendungsfall:

_.without(array, emptyVal, otherEmptyVal);
_.without([1, 2, 1, 0, 3, 1, 4], 0, 1);

Mit Leergut:

_.without(['foo', 'bar', '', 'baz', '', '', 'foobar'], '');
--> ["foo", "bar", "baz", "foobar"]

Ver lodash-Dokumentation für ohne .

17voto

Luis Perez Punkte 26807

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]

15voto

Erik Johansson Punkte 323

@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;
  };
}

14voto

Josh Bedo Punkte 3232

Da es sonst niemand erwähnt hat und die meisten Leute einen Unterstrich in ihrem Projekt haben, können Sie auch _.without(array, *values); .

_.without(["text", "string", null, null, null, "text"], null)
// => ["text", "string", "text"]

13voto

user3328281 Punkte 157

Um undefinierte Elemente aus einem Array zu entfernen, können Sie einfach

const array = [
  { name: "tim", age: 1 },
  undefined,
  { name: "ewrfer", age: 22 },
  { name: "3tf5gh", age: 56 },
  null,
  { name: "kygm", age: 19 },
  undefined,
];
console.log(array.filter(Boolean));

CodeJaeger.com

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.

Powered by:

X