<分区>
为什么 [1, 2, 3].map((x) => Math.max(x))
返回 [1, 2, 3]
然而 [1, 2, 3].map(Math.max)
返回 [NaN, NaN, NaN]
?
我本来以为 [1, 2, 3].map(Number)
返回 [1, 2, 3]
,同样适用于使用 Math.max
同理。
特别是因为 Math.max(3) == Number(3)
。
标签 javascript arrays
<分区>
为什么 [1, 2, 3].map((x) => Math.max(x))
返回 [1, 2, 3]
然而 [1, 2, 3].map(Math.max)
返回 [NaN, NaN, NaN]
?
我本来以为 [1, 2, 3].map(Number)
返回 [1, 2, 3]
,同样适用于使用 Math.max
同理。
特别是因为 Math.max(3) == Number(3)
。
最佳答案
是因为map
使用三个参数调用回调:
map
被调用。所以 [1, 2, 3].map(Math.max)
不等同于 [1, 2, 3].map((x) => Math.max (x))
,但到 [1, 2, 3].map((x, i, arr) => Math.max(x, i, arr))
.
Math.max(1, 0, [1, 2, 3])
是 NaN
因为 [1, 2, 3]
数组在字符串化时变为 "1,2,3"
,在转换为数字时变为 NaN
。
关于javascript - 使用 Math.max 调用 Array.prototype.map 返回 NaN 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52664121/