廖雪峰 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
所以后两个只能报错了。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.