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?

-1voto

lcabral Punkte 15

Herausfiltern von ungültigen Einträgen mit einem regulären Ausdruck

array = array.filter(/\w/);
filter + regexp

-2voto

rpearce Punkte 1624

Hier ist ein Beispiel mit variadic Verhalten & ES2015 Fett Pfeil Ausdruck:

Array.prototype.clean = function() {
  var args = [].slice.call(arguments);
  return this.filter(item => args.indexOf(item) === -1);
};

// Usage
var arr = ["", undefined, 3, "yes", undefined, undefined, ""];
arr.clean(undefined); // ["", 3, "yes", ""];
arr.clean(undefined, ""); // [3, "yes"];

-2voto

A. Zalonis Punkte 1579

Schön ... sehr schön Wir können auch alle Array-Werte wie folgt ersetzen

Array.prototype.ReplaceAllValues = function(OldValue,newValue)
{
    for( var i = 0; i < this.length; i++ )  
    {
        if( this[i] == OldValue )       
        {
            this[i] = newValue;
        }
    }
};

-2voto

hamza ahmad Punkte 27
// recursive implementation
function compact(arr) {
        const compactArray = [];
        //base case 
        if(!arr.length) return []
        if(typeof arr[0] !== "undefined" 
          && arr[0]!==null && arr[0] !== " " && 
          arr[0]!== false &&
          arr[0]!== 0){
          compactArray.push(arr[0]);
        }
        return compactArray.concat(compact(arr.slice(1)))
    }

    compact([1,0,false,null,undefined,"banana"])`

-3voto

Jason Punkte 700

Ich musste die gleiche Aufgabe erledigen und stieß auf diesen Thread. Ich endete mit dem Array "join", um eine Zeichenfolge mit einem "_" Trennzeichen zu erstellen, dann tun ein bisschen Regex zu: -

1. replace "__" or more with just one "_",
2. replace preceding "_" with nothing "" and similarly 
3. replace and ending "_" with nothing ""

...dann mit array "split" ein bereinigtes Array erstellen:-

var myArr = new Array("","","a","b","","c","","","","","","","","","e","");
var myStr = "";

myStr = myArr.join("_");

myStr = myStr.replace(new RegExp(/__*/g),"_");
myStr = myStr.replace(new RegExp(/^_/i),"");
myStr = myStr.replace(new RegExp(/_$/i),"");
myArr = myStr.split("_");

alert("myArr=" + myArr.join(","));

...oder in 1 Zeile Code:-

var myArr = new Array("","","a","b","","c","","","","","","","","","e","");

myArr = myArr.join("_").replace(new RegExp(/__*/g),"_").replace(new RegExp(/^_/i),"").replace(new RegExp(/_$/i),"").split("_");

alert("myArr=" + myArr.join(","));

...oder die Erweiterung des Array-Objekts :-

Array.prototype.clean = function() {
  return this.join("_").replace(new RegExp(/__*/g),"_").replace(new RegExp(/^_/i),"").replace(new RegExp(/_$/i),"").split("_");
};

var myArr = new Array("","","a","b","","c","","","","","","","","","e","");

alert("myArr=" + myArr.clean().join(","));

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