JavaScript 中的假值有 false、null、0、""、undefined和 NaN。如何判断一个值是不是其中之一呢?比如有这么一个需求:去掉数组中的所有“假值”
function bouncer(arr) {
}
bouncer([7, "ate", "", false, 9]); // -> [7, "ate", 9]
要怎么样实现这个方法才能完成需求呢?
答案就是 Boolean
!!!
MDN上对此有重要说明:
如果需要,作为第一个参数传递的值将转换为布尔值。如果省略或值0,-0,null,false,NaN,undefined,或空字符串(""),该对象具有的初始值false。所有其他值,包括任何对象,空数组([])或字符串"false",都会创建一个初始值为的对象true。
不要用创建 Boolean 对象的方式将一个非布尔值转化成布尔值,直接将 Boolean 当做转换函数来使用即可,或者使用双重非(!!)运算符:
var x = Boolean(expression); // 推荐
var x = !!(expression); // 推荐
var x = new Boolean(expression); // 不太好
所有如果要实现上有的bouncer(arr)
方法,可以这样写:
function bouncer(arr) {
return arr.filter(item => {
return Boolean(item);
})
}
或者:
function bouncer(arr) {
return arr.filter(item => {
return !!item;
})
}