1
1sm23 2021-08-24 15:39:12 +08:00
不应该是 Array.prototype.filter 吗
|
2
momocraft 2021-08-24 15:39:23 +08:00 1
Boolean 是一个函数 你在 repl 里执行一次就知道了
|
3
Puteulanus 2021-08-24 15:40:58 +08:00 1
就是 new Boolean() 那个 Boolean 吧
|
4
zhw2590582 2021-08-24 15:43:28 +08:00 1
[0, '', false, null, NaN].filter(Boolean)
等价于---------------------------------------- [0, '', false, null, NaN].filter(item => Boolean(item)) |
5
clf 2021-08-24 15:46:18 +08:00 1
|
6
supuwoerc 2021-08-24 15:46:45 +08:00 1
这句话的意思是过滤虚值,我经常这样处理,类似的还可以
``` array.map(Number) array.map(String) ``` Boolean,String 都是一个包装函数,传入 map 就是指定 map 处理逻辑。 |
7
Leviathann 2021-08-24 16:01:20 +08:00 via iPhone
一个 object 的 get 方法有没有简写
类似 Java 的方法引用 xxxMap::get 那种 |
8
Bechbaliq OP 明白了,换成这种写法我就懂了:
var x = [0, 1, 0, 0].map(positive); var positive = (x) => new Boolean(x); map 里的 positive 是一个函数,可以直接替换成 Boolean. |
9
DICK23 2021-08-24 17:38:57 +08:00 1
Boolean 就是个构造函数,蕾丝与 i => !!i
|
10
shyling 2021-08-24 17:40:38 +08:00 1
Boolean 是个函数
|
11
Mexion 2021-08-24 17:49:32 +08:00 1
Boolean 是一个函数,map 会将遍历的元素逐个传进这个函数
|
12
mxT52CRuqR6o5 2021-08-24 17:53:33 +08:00 1
@Bechbaliq
Boolean(x)和 new Boolean(x)不一样 |
13
Bechbaliq OP @mxT52CRuqR6o5 嗯嗯,上面那个 MDN 文档提到了,感谢指出
|
14
libook 2021-08-25 10:35:59 +08:00 3
JS 是弱类型语言,可以参考“鸭子类型”的理论。
你以后遇到类似的问题,可以按照如下步骤来探究: (一) 疑问在于 map 方法的参数上,所以可以去 MDN 上看 Array.prototype.map 方法的参数是什么: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map 可以看到 map 有 2 个参数,你的例子只传了第一个参数,也就是 map 的 callback 参数,map 会往 callback 函数里传三个参数,也就是说 Boolean 函数会接收到 map 传进来的三个参数。 不要被 Boolean 这个名字迷惑到,给 map 传任何 callback 都是这样的写法,你自己写一个 funcA,也是同样的写法传给 map,如 testArray.map(funA),JS 里名称的大小写没有特殊的特性区别。 (二) 看看 Boolean 是什么,同样去 MDN 上查: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean 看来 Boolean 本身是一个函数,只有一个参数,会返回一个布尔型数据。(而且文档也特意说明了,Boolean 函数和 Boolean 构造函数是两回事,特性不一样,所以换成 new Boolean 会得到不一样的结果) (三) 所以 map 传给 Boolean 函数的三个参数中,Boolean 函数只会用到第一个,也就是 callback 数组中正在处理的当前元素。 Boolean 会将这个参数转换成一个布尔型数据返回给 map 。 (四) 回过头来看 map 的文档,看看 map 是如何处理 callback 返回的数据的,“callback 每次执行后的返回值(包括 undefined )组合起来形成一个新数组。” 那么结果就很清晰了:map 方法会把数组中的每个元素拿出来传给 Boolean 函数,转换成布尔型数值,然后把结果组成一个新数组。 |