首页 新闻 会员 周边 捐助

JS的迭代方法map的传入函数问题

0
悬赏园豆:20 [已解决问题] 解决于 2016-09-13 15:51
["1","2","3"].map(parseInt)   //[1,NaN,NaN]
题目很简单,就是这个,求各位大佬指点。里面直接传入一个parseInt,这个parseInt转换了谁,后面两个NaN是怎么得出来的?
刘冰0117的主页 刘冰0117 | 初学一级 | 园豆:102
提问于:2016-09-13 15:21
< >
分享
最佳答案
2

首先看map干了什么

["1","2","3"].map(function (){ console.log(arguments) })

["1", 0, Array[3]]

["2", 1, Array[3]]

["3", 2, Array[3]]

然后看 parseInt

parseInt(string, radix);

parseInt() 函数将给定的字符串以指定基数(radix/base)解析成为整数。就是 你想把string当成radix进制数解析成10进制

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/parseInt

radix传入0时会把1当成是10进制数,所以“1”成功了。

radix传入1时...没有1进制数,所以不可能转换成功,返回NaN

radix传入2时,"3"不能当作2进制数处理所以也返回NaN

 

 

 

收获园豆:20
长蘑菇星人 | 小虾三级 |园豆:1832 | 2016-09-13 15:46

卧槽,我根本没考虑这么细,大神请收下我的膝盖,看来我还是基础不行

刘冰0117 | 园豆:102 (初学一级) | 2016-09-13 15:51
其他回答(1)
0

个人感觉就是map会针对parseInt依次传入每个元素,形成一个新的array,只是不是应该是[1,2,3]么?为什么后面成了NaN,不明白

顾晓北 | 园豆:10898 (专家六级) | 2016-09-13 15:33

我也以为是[1,2,3],但是确实输出的是NaN,后面的俩NaN不知道怎么来的

支持(0) 反对(0) 刘冰0117 | 园豆:102 (初学一级) | 2016-09-13 15:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册