map和parseInt

map和parseInt

一、map
1、map的参数

Array.map(callback, thisIndex):

callback(currentValue, index, arr):

  • currentValue:必要参数,表示当前元素的值
  • index:当前元素在数组中的索引,可选
  • arr:当前元素所属的数组,可选

thisIndex: 可选参数,回调函数的this或者对象的this

2、map的特点:

  • 不会改变原数组,返回的是经过回调函数处理的新数组
  • 在回调函数中必须返回currentValue
  • 不会检验数组是否为空

3、map的使用

        let newArr = [1,2,3,4,5,6,7,8,9,10];
        console.log(newArr.map(data => {
            return data*2;
        }));

得到如下结果:
结果

二、parseInt

1、参数

parseInt(string, radix):

string: 表示要转换的字符串

radix: 表示转换的基数(进制数, 2 ~ 36 )

当我们只传string时,js会对它做如下基础处理:

  • 如果 string 以 “0x” 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。
  • 如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt()
    的一个实现把其后的字符解析为八进制或十六进制的数字。
  • 如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。

2、parseInt的特点:

  • 只有字符串的第一个数字会被返回,当第一个字符不能转换为数字,将会直接返回NaN
  • 字符串开头和结尾可以有空格
  • 当字符串第一个是比后面基数的值大时,会直接返回NaN(即该数字不是该进制表示的数)

3、parseInt的使用:

        console.log(parseInt('5'));
        console.log(parseInt('r5'));
        console.log(parseInt('4rr'));
        console.log(parseInt('3', 2));

结果:
map和parseInt_第1张图片

三、、面试题

以下输出什么?为什么?

console.log(['1', '2','3'].map(parseInt));

这里将parseInt当做回调函数,但是在调用parseInt时会自动获取两个参数:数组中每个值以及数组的索引。这得益于map函数,因为map函数的回调函数默认有三个参数,第一个是数组每个元素,第二个是索引,第三个是元素所属的数组;由于parseInt仅能接收前两个参数,所以我们运行代码时会得到以下结果:

  • parseInt(‘1’, 0):在js中,当redix为0但是string不是0时,将会把基数当做10来处理,因此得到 1
  • parseInt(‘2’, 1):由于redix=1,不在基数范围2-36之间并且2也不是可以表示一进制的数,所以得到结果 NaN
  • parseInt(‘3’, 2):redix = 1是在2-36范围之间的,但是由于3不是能够表示二进制的数,所以得到结果 NaN

因此,最后得到的结果是 [1, NaN, NaN]

你可能感兴趣的:(map和parseInt)