【发布时间】:2019-07-02 08:58:39
【问题描述】:
所以我正在尝试使用以下代码将字符串数组转换为数字数组。
let a = ["0", "0"];
let b = Array.from(a, parseInt);
console.log(b);
我得到的是
b = [0, NaN];
我熟悉使用Array.map() 的类似问题,因为它为parseInt() 提供了三个参数,而第二个参数(索引)被parseInt() 解释为基数。但Array.from() 不应该是这样。
有人能给我解释一下吗?
【问题讨论】:
-
就是
map的第二个参数Array.from的方法。 -
发生这种情况是因为回调函数(在这种情况下为 parseInt)是用两个参数调用的,它们是当前值和原始数组中值的索引。考虑到所说的,parseInt 使用两个参数调用,并且在 parseInt 中,第二个参数是基数:developer.mozilla.org/it/docs/Web/JavaScript/Reference/… 因此第二项中的回调使用值
'0'和基数1调用,产生NaN -
好的,MDN 文档没有指定回调签名。但是和
map()是一样的,后面会提到。 -
把这个
Array.from(a, parseInt);改成这个Array.from(a, ([n]) => parseInt(n));这样,你就可以避免隐式参数radix的问题,你从函数Array.from(...)传递索引
标签: javascript arrays parseint