「前端」[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
注意:在radix
为undefined
,或者radix
为0
或者没有指定的情况下,JavaScript作如下处理:
- 如果字符串
string
以0x
或者0X
开头,则基数为16(16进制)。 - 如果字符串
string
以0
开头,基数为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]
上一篇: 用python爬取今日说法每期数据
下一篇: JS简单--面试题