搜索
写经验 领红包

javascipt中的map(javascipt中map和set方法)

导语:Javascript中关于map和parseInt的小坑

在使用Javascript编写代码时,由于其语言的灵活性,总是会出现这样或那样的坑,今天我们就来一起看一下关于map和parseInt方法联合使用的坑

map与parseInt

我们直接来看下面一段代码

map与parseInt方法

很多人在看到这段代码后,会直接认为输出[1, 2, 3]。但是结果却是输出[1,NaN,NaN],为什么会出现这个结果呢?我们一起来分析下

parseInt

在我们平时使用parseInt方法时,一般都是这样使用的

parseInt一般使用方法

这样的用法是没错的,可以得到正常的结果。

但是真实的parseInt方法其实是接收两个参数的

真实的parseInt方法

第一参数表示的是需要转换的值,第二个参数表示的是转换的进制,比如我们常用的二进制,八进制,十进制。如果不传递第二个参数的话,默认为十进制,因此上述的parseInt(12)可以正确的返回12。

在使用进制位表示数值时,需要记住这样一个原则:任何数的零进制都是这个数本身,高于进制位所能表示的最大值数返回NaN。比如说2的一进制返回NaN,因为一进制只能表示0和1,而2大于0和1,因此返回NaN

map

Javascript中的map方法,代码如下所示

Javascript中的map方法

map方法内部必须接收一个函数,而且这个函数的参数如下所示

函数的参数

第一个参数表示遍历的值;第二个值表示数组的索引;第三个值表示数组本身。

两者结合看例子

我们再回头看看刚才的例子,两个函数结合起来使用,相当于以下效果

实际执行代码

在parseInt方法中有讲过,任何数的0进制都返回本身,所以先返回1;

而2大于1进制所能表示的数值,3大于2进制能表示的数值,因此都返回NaN

另外一个例子

我们再来看下面一个例子

例子

很多人看到这个例子就会想到上面讲的内容,以为会输出

错误的结果

但是真实的结果却是这样的

正确的结果

这是为什么呢?

从1到9都很好理解,1返回本身,2到9因为数值本身超过了进制位所能表达的最大值,比如8超过了7进制能表示的最大数,都会返回NaN。

而从10开始就不一样了,parseInt(10, 9),此时会将10拆开成1和0,1和0都可以用9来表示,1表示9,0表示0,因此parseInt(10, 9)=9;

同样parseInt(15, 14),将15拆开成1和5,1的14进制表示的是14,5表示5,parseInt(15, 14)=14+5=19;

至此上述的题目就迎刃而解了。

总结

在Javascript中会出现很多的坑,需要一点点去总结,希望今天的文章能给你带来帮助

本文内容由小心整理编辑!