【发布时间】:2017-01-27 12:55:28
【问题描述】:
function bouncer( arr ){
return arr.filter( function( value ){
return value;
});
此函数从数组中删除所有虚假值。我不明白它是如何工作的。过滤器是否自动只返回非虚假值?
【问题讨论】:
-
你需要阅读
.filter()的文档。
标签: javascript function
function bouncer( arr ){
return arr.filter( function( value ){
return value;
});
此函数从数组中删除所有虚假值。我不明白它是如何工作的。过滤器是否自动只返回非虚假值?
【问题讨论】:
.filter()的文档。
标签: javascript function
因为filter 使用数组中的每个值调用回调,并构建一个新数组,其中仅包含filter 为其返回真值的值。所以从回调返回的值只保留真值(非假值),因为当回调返回一个假值时,filter 将该条目留在它构建的数组之外。
有关filter 工作原理的详细信息,请参阅MDN(可读)或the specification(明显较少,但确定)。
【讨论】:
您也可以使用Boolean 来过滤真实值。
它为每个值返回一个布尔值。
如有必要,作为第一个参数传递的值将转换为布尔值。如果该值为
0、-0、null、false、NaN、undefined或空字符串(""),则该对象的初始值为@987654333 @。如果将 DOM 对象document.all作为参数传递,则新的布尔对象也具有初始值false。所有其他值,包括任何对象或字符串"false",都会创建一个初始值为true的对象。
function bouncer(arr) {
return arr.filter(Boolean);
}
【讨论】: