function bouncer( arr ){
return arr.filter( function( value ){
return value;
});
此函数从数组中删除所有虚假值。我不明白它是如何工作的。是否自动过滤仅返回非虚假值?
答案 0 :(得分:4)
因为filter
使用数组中的每个值调用回调,并构建一个新数组,其中包含仅 filter
返回真值的值。因此,从回调中返回值只保留truthy值(非虚假值),因为当回调返回一个假值时,filter
将该条目从它构建的数组中移出。
有关filter
工作原理的详细信息,请参阅MDN(可读)或the specification(明显不那么明确,但最终确定)。
答案 1 :(得分:2)
您也可以使用Boolean
过滤真实值。
它为每个值返回一个布尔值。
如果需要,作为第一个参数传递的值将转换为布尔值。如果值被省略,或者是
0
,-0
,null
,false
,NaN
,undefined
或空字符串({{ 1}}),该对象的初始值为""
。如果DOM对象document.all
作为参数传递,则新布尔对象的初始值也为false
。所有其他值(包括任何对象或字符串false
)都会创建一个初始值为"false"
的对象。
true