为何在JS的filter方法中使用Boolean仅返回真值?
为什么数组filter(Boolean)只保留真值?
要搞懂这个问题,得先理清两个核心点:filter方法的运行逻辑,以及Boolean作为函数的作用。
Array.filter()的规则:它会遍历数组的每个元素,将元素传入你指定的回调函数。只有当回调函数返回
true时,当前元素才会被保留到结果数组;如果回调返回false,该元素就会被过滤掉。Boolean()函数的作用:当把
Boolean当作函数调用时,它的功能是把传入的参数转换成对应的布尔值:- 传入
true,返回true - 传入
false,返回false - 其他类型的假值(比如
0、空字符串''、null、undefined)传入,同样会返回false
- 传入
回到你的代码:数组里的false确实属于布尔类型,但当它被传给Boolean函数时,返回的是false,所以filter就把这个false元素过滤掉了。最终结果只会留下那些让Boolean返回true的元素——也就是数组里的true。
举个混合类型数组的例子,能更直观看到效果:
let mixedArr = [true, false, 0, '', 'hello', null, 123].filter(Boolean); console.log(mixedArr); // 输出: [true, 'hello', 123]
内容的提问来源于stack exchange,提问作者WlGamer YT
相关产品推荐
相关产品推荐

