该函数如何从数组中删除所有有价值的值?

时间:2017-01-27 12:55:28

标签: javascript function

function bouncer( arr ){
return arr.filter( function( value ){
    return value;
});

此函数从数组中删除所有虚假值。我不明白它是如何工作的。是否自动过滤仅返回非虚假值?

2 个答案:

答案 0 :(得分:4)

因为filter使用数组中的每个值调用回调,并构建一个新数组,其中包含 filter返回真值的值。因此,从回调中返回值只保留truthy值(非虚假值),因为当回调返回一个假值时,filter将该条目从它构建的数组中移出。

有关filter工作原理的详细信息,请参阅MDN(可读)或the specification(明显不那么明确,但最终确定)。

答案 1 :(得分:2)

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

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

  

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

true