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?
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"];
// 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"])`
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 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.