javascript.filter()真布尔值
我只需要返回真正的布尔语句,当我运行这段代码时,它就可以工作了。然而,我很困惑,因为我的“if语句”无论是b都有效对或b!==错。有人能解释一下为什么这两种方法都有效吗?您的函数之所以有效,是因为布尔比较中的JavaScript值是“truthy”或“false”。在布尔上下文(比较、if语句等)中使用时,非布尔值被强制为布尔值 如果我理解您的意图,您可以修改您的函数以获得预期的输出,如下所示:javascript.filter()真布尔值,javascript,filter,boolean,Javascript,Filter,Boolean,我只需要返回真正的布尔语句,当我运行这段代码时,它就可以工作了。然而,我很困惑,因为我的“if语句”无论是b都有效对或b!==错。有人能解释一下为什么这两种方法都有效吗?您的函数之所以有效,是因为布尔比较中的JavaScript值是“truthy”或“false”。在布尔上下文(比较、if语句等)中使用时,非布尔值被强制为布尔值 如果我理解您的意图,您可以修改您的函数以获得预期的输出,如下所示: function bouncer(arr) { // Don't show a false ID
function bouncer(arr) {
// Don't show a false ID to this bouncer.
function a(b) {
if(b !== false) {
return b;
}
}
arr = arr.filter(a);
return arr;
}
bouncer([7, 'ate', '', false, 9]);
这是因为您返回了值。filter函数应返回true或false,如下所示:
function bouncer(arr) {
// Don't show a false ID to this bouncer.
function a(b) {
if(typeof(b) === 'boolean' && !b) {
return new Boolean(b);
}
}
arr = arr.filter(a);
return arr;
}
bouncer([7, 'ate', '', false, 9, true]);
或更短:
function bouncer(arr) {
arr = arr.filter(function(x) { console.log(x === true)
if(x !== false) {
return true;
}
});
return arr;
}
我正在解决一个类似的问题,并得出了以下结论:
function bouncer(arr) {
return arr.filter(function(x) { console.log(x === true)
return x !== false;
});
}
最简单的方法是:
function bouncer(arr) {
return arr.filter(Boolean);
}
bouncer([7, 'ate', '', false, 9]);
// returns ['7','ate','9']
显然是在ES5中引入的
这确实帮助我了解了这里发生的一切。希望有帮助
基本上,写作:
function bouncer(arr) {
return arr.filter(x => !!x);
}
arr.filter(Boolean)
与写作相同:
function bouncer(arr) {
return arr.filter(x => !!x);
}
arr.filter(Boolean)
因为也是一个函数,当为真时返回truthy,当为假时返回falsy
例如:
var a=[1,2,“b”,0,{},“,NaN,3,未定义,null,5];
var b=a.filter(布尔);//[1,2,b”,{},3,5];
资料来源:。我偶然发现了这个练习,并在玩弄它。它最终帮助我更好地理解它,所以如果你可以的话,我将为这个bouncer函数添加一点清晰性
arr.filter( function(x) { return Boolean(x); });
使用
arr.filter(布尔值)
simpler@NickA为什么filter(Boolean)将falsy确定为falsy,而Boolean(false)是truthy?@user25976 aBoolean
是一个对象,所有对象都是truthy,但是原语false
只是false
您不需要!!x
。只是arr.filter(x=>x)
足够了。@user25976Boolean(false)
返回false
new Boolean(false)
返回一个对象。关键词new
起到了作用。相关-这里有这么多人甚至没有回答你提出的实际问题,真是令人惊讶。