前言
近日在看 30 seconds of code 里面的 compact 方法发现是这么写的
const compact = arr => arr.filter(Boolean);
,用来移除所有的 ” falsey“ 类型元素(false, null, 0, "", undefined, NaN), 很好奇写了个Boolean 为什么能够过滤falsey类型元素呢,让我们来探索一下。
我们都知道,Boolean 作为一个函数的时候,能够根据元素的真假类型,对应返回 true 或 false。
Boolean(0); // false
Boolean(true); // true
Boolean(3); // true
Boolean(""); // false
Boolean("false"); // true
而Array.filter
接受一个函数,因此 const compact = arr => arr.filter(Boolean);
等价于const compact = arr => arr.filter(item => Boolean(item));