2017-06-25 2 views
2

Ich habe folgende Array:Wie undefined entfernen und ein neues Array erstellen Javascript?

var imagesList = [undefined x 1, cars.jpg, undefined x 1, boats.jpg]; 

Wie ich die undefinierten auszufiltern tun? so kann ich es wie folgt:

var imagesShow = [cars.jpg, boats.jpg]; 

ich nicht viel Dokumentation gefunden haben in einer Reihe von undefined los mit Javascript zu werden.

+0

was bedeutet undefined x 1? –

+0

console.log eines Sparse-Arrays. –

+0

Wenn Sie die Methode "delete" für Javascript-Arrays verwenden, erhalten Sie undefined x1 – ticktock

Antwort

5

Sie Array#filter mit Boolean als Rückruf für truthy Werte nutzen könnten.

var imagesList = [undefined, 'cars.jpg', undefined, 'boats.jpg'], 
 
    imagesShow = imagesList.filter(Boolean); 
 
    
 
console.log(imagesShow);

5

Verwendung Array#filter:

var imagesList = [undefined, 'cars.jpg', undefined, 'boats.jpg']; 
 

 
var result = imagesList.filter(function(v) { 
 
    return v !== undefined; 
 
}) 
 

 
console.log(result);

2

Verwenden Array.Filter

var imagesList = [undefined, 'cars.jpg', undefined, 'boats.jpg']; 
 
    var result = imagesList.filter(function(element) { 
 
     return element !== undefined; 
 
    }); 
 
console.log(result);

3

Versuchen Sie, die Array.filter Funktion

mit

Jedes Array-Element, das die Prüfung in der obigen Callback-Funktion nicht besteht, wird herausgefiltert - in diesem Fall, wenn das Element nicht definiert ist.

1

Versuchen Sie Array.filter() Methode mit ES6 Arrow Funktion Ausdruck.

var imagesList = [undefined, "cars.jpg", undefined, "boats.jpg"]; 
 

 
var filteredList = imagesList.filter(item => { return item !== undefined }); 
 

 
console.log(filteredList);

0

von undefined x 2 Anzeigen Ihr Array zeigt deutlich, dass es sich um eine spärliche eine ist, was bedeutet, Sie haben keine undefinierten Elemente. Sie haben einfach nicht die Schlüssel, um mit Gegenständen zu beginnen.

OK können Sie haben und wünschen richtige void 0 oder undefined Elemente aufbewahrt werden sollen (in diesem Fall alle oben genannten Lösungen fehl) oder ein numerischer Wert 0 oder null Objektposition (in diesem Fall die Antwort akzeptiert wird fehlschlagen).

Um ein spärliches Array in eine dichte Form zu konvertieren, wäre most efficient method eine for in Schleife (oder Object.keys()).

Also für spärlichen Array ist looping es am besten zu nutzen

var res = [], 
 
    a = []; 
 
a[1] = "cars.jpg"; 
 
a[5] = null; 
 
a[999999] = "beauty.jpg"; 
 

 
// [undefined × 1, "cars.jpg", undefined × 3, null, undefined × 999993, "beauty.jpg"] 
 

 
function dense(a){ 
 
    var r = []; 
 
    for (i in a) r.push(a[i]); 
 
    return r; 
 
} 
 

 
console.time("test"); 
 
res = dense(a); 
 
console.timeEnd("test"); 
 
console.log(res);

Jetzt können Sie den obigen Code mit einer eleganten Filterlösung vergleichen;

var res = [], 
 
    a = []; 
 
a[1] = "cars.jpg"; 
 
a[5] = null; 
 
a[999999] = "beauty.jpg"; 
 

 
// [undefined × 1, "cars.jpg", undefined × 3, null, undefined × 999993, "beauty.jpg"] 
 

 
console.time("test"); 
 
res = a.filter(Boolean); 
 
console.timeEnd("test"); 
 
console.log(res);

So wie Sie null sehen verschwunden ist, und es ist langsamer, da sie alle nicht vorhandenen Schlüssel überprüft. Jedoch mit for in Schleife, die die falschen Werte oder nicht hält, ist völlig unter Ihrer Kontrolle.

Verwandte Themen