代码:
console.log(["1","2","3"].map(parseInt));
测试结果:
当然,这里换成Number(),或者换个方法用parseInt解析都能得到我们想要的效果:
分析一波:
Array map()
参数一览:
http://www.runoob.com/jsref/jsref-map.html
我们测试一下:
function中第一个参数为当前操作的元素值,第二个为数组角标,第三个是操作的数组对象;
那么["1","2","3"].map(parseInt),实际上parseInt是接收了三个参数的,做的操作应该是:
parseInt("1",0,["1", "2", "3"]);
parseInt("2",1,["1", "2", "3"]);
parseInt("3",2,["1", "2", "3"]);
我们再来看parseInt。
parseInt()
http://www.w3school.com.cn/js/jsref_parseInt.asp
显然问题出在第二个参数上,通俗易懂的说,parseInt第二个参数决定它以几进制去对第一个参数解析。
parseInt("1",0);
第二个参数为0,就是以十进制解析,返回 1
parseInt("2",1);
第二个参数为1,不在2~36之间,不管第一个参数是几,返回 NaN
parseInt("3",2);
第二个参数为2,以2进制转换3,显然2进制里是不存在3的,返回 NaN
综上所述,最终结果就是[1,NaN,NaN]。
有其他问题大家可以留言讨论,谢谢~