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

该函数删除数组中的所有伪数值。我不明白它是如何工作的。是否自动过滤仅返回非伪造值?这个函数如何从数组中删除所有的falsy值?

+1

您需要阅读'.filter()'的文档。 – Tomalak

+0

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

回答

4

由于filter调用与来自阵列中的每个值的回调,并建立一个新的数组,其包括仅其中filter返回truthy值的值。因此,从回调中返回值只保留真值(非伪造值),因为当回调返回虚假值时,filter会将该条目从其构建的数组中移出。

有关filter如何工作的详细信息,请参阅MDN(可读)或the specification(明显不如此,但明确)。

2

您也可以使用Boolean来过滤真值。

它为每个值返回一个布尔值。

如果需要,作为第一个参数传递的值将转换为布尔值。如果省略值或者是0,-0,null,false,NaN,undefined或空字符串(""),则该对象的初始值为false。如果将DOM对象document.all作为参数传递,则新的布尔对象的初始值也为false。所有其他值(包括任何对象或字符串"false")都会创建一个初始值为true的对象。

function bouncer(arr) { 
    return arr.filter(Boolean); 
} 
相关问题