欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

「前端」[1, 2, 3].map(parseInt) 解析

程序员文章站 2022-06-09 18:39:15
...

这题比较基础,主要考察的是map()方法和parseInt()方法的了解。

parseInt

parseInt()方法解析一个字符串参数,返回一个指定基数的整数。

const intValue = parseInt(string, radix);
//  由此可见Number.parseInt()与全局环境下parseInt()是同一个方法
Number.parseInt() === parseInt();	//  true

我们可以看到parseInt()方法有两个参数:

  • string:需要解析的值。如果string不是一个字符串,那么会将其转化为字符串。
  • radix:一个介于2和26之间的整数,表示string参数的基数。默认为10
  • 返回值:返回一个整数或者NaN
parseInt(100);		//  100
parseInt(100, 10);	//  100
parseInt(100, 4);	//  4

注意:在radixundefined,或者radix0或者没有指定的情况下,JavaScript作如下处理:

  • 如果字符串string0x或者0X开头,则基数为16(16进制)。
  • 如果字符串string0开头,基数为8(8进制)或者10(10进制),具体是哪个基数有具体环境决定。
  • 如果字符串string以其他任何值开头,则基数为10(10进制)。

map

map()方法创建一个新数组,其结果是该数组中每个元素都调用一个提供的函数后返回的结果。

var new_array = arr.map(function callback(currentValue[, index[, array]]) {
	// Return element for new_array 
}[, thisArg])

可见,回调函数callback需要三个参数:

  • currentValue:表示当前正在处理的元素。
  • index:可选。表示当前正在处理的元素在数组中的下标。
  • array:可选。表示当前被处理的数组。

回到原题

让我们回到原题上:

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

对于这个数组,每一次迭代,parseInt接收两个参数,字符串和基数,因此上面这段代码实际上是这样的:

[1, 2, 3].map((item, index) => {
	return parseInt(item, index);
});

所以返回值就是:

parseInt(1, 0);	//  1
parseInt(2, 1);	//  NaN
parseInt(3, 2);	//  NaN

因此原数组就变成了:

[1, NaN, NaN]