廖雪峰 Javascript 教程,把数组中的字符型转换为数值型。
var arr=['1','2','3',]; var r=arr.map(parseInt); console.log(r); // 此处打印的是 1,NaN,NaN 别人给出的解释,这个解释没有看太明白。请从参数传递的角度详细解释一下。谢谢大家。
因为 map()实际上会传入三个参数:(currentValue, index, callingArray)。parseInt 接受两个参数(string, radix),第二个参数声明底数(即指定被转换的“数字”多少进制)。 有关 parseInt 的 radix,当遇到 0、undefined 或未被指定时,parseInt 有如下行为: 1.被转换的字符串起于"0x"/"0X" --> 十六进制转为十进制; 2.被转换的字符串起于"0" --> 八进制或十进制(由解释器决定)转为十进制; 3.被转换字符串起于其他值 --> 十进制转为十进制。 当 arr = [1,2,3]时,arr.map(parseInt)实际为: parseInt('1', 0); // 按十进制转换'1' parseInt('2', 1); // 按一进制转换'2',但一进制中只有 0 没有 1 parseInt('3', 2); // 按二进制转换 3,但二进制中只有 0 和 1 没有 2 所以后两个只能报错了。 