2017-01-27 2 views
1
function bouncer(arr){ 
return arr.filter(function(value){ 
    return value; 
}); 

Diese Funktion entfernt alle Falschwerte aus einem Array. Ich verstehe nicht, wie es funktioniert. Wird automatisch gefiltert nur nicht-falsy Werte zurückgeben?Wie entfernt diese Funktion alle Falsy-Werte aus einem Array?

+1

Sie müssen die Dokumentation von '.filter()' lesen. – Tomalak

+0

[Array.prototype.filter()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) –

Antwort

4

Da filter ruft den Rückruf mit jedem Wert aus dem Array, und baut eine neue Array, das nur die Werte für das beinhaltet filter einen truthy Wert zurückgegeben. Wenn Sie also den Wert aus dem Callback zurückgeben, werden nur truthy Werte (nicht-falsy) beibehalten, da filter diesen Eintrag aus dem Array, das er erstellt, zurücklässt, wenn der Callback einen falschen Wert zurückgibt.

Einzelheiten zur Funktionsweise von filter finden Sie unter MDN (lesbar) oder the specification (deutlich weniger, aber definitiv).

2

Sie können auch Boolean zum Filtern von Truthy-Werten verwenden.

Es gibt einen booleschen Wert für jeden Wert zurück.

Der als erster Parameter übergebene Wert wird bei Bedarf in einen booleschen Wert konvertiert. Wenn der Wert weggelassen wird oder 0, -0, null, false, NaN, undefined oder die leere Zeichenfolge ("") hat die Aufgabe, einen Anfangswert von false. Wenn das DOM-Objekt document.all als Parameter übergeben wird, hat das neue boolesche Objekt auch einen Anfangswert von false. Alle anderen Werte, einschließlich eines Objekts oder der Zeichenfolge "false", erstellen ein Objekt mit einem Anfangswert von true.

function bouncer(arr) { 
    return arr.filter(Boolean); 
} 
Verwandte Themen