主要是在笔试里看到了,自己试下。。
let a = ['1', '2', '3'].map(parseInt)
console.log(a)
运行结果:
反正当时是做错了,QAQ
查了一下原理,感谢大佬的博客:
https://blog.csdn.net/The_X_One/article/details/83584019
- 查文档,map()的语法:
var new_array = arr.map(function callback(currentValue[, index[, array]]) {
// Return element for new_array
}[, thisArg])
- callback:产生新数组元素的函数,带有三个参数:currentValue、index和array
- 这些参数被传到了parseInt里面!
- 所以,所以例子中的parseInt函数应该是:parseInt(“1”,0,arr)、parseInt(“2”,1,arr)、parseInt(“3”,2,arr)。
- parseInt的语法:
parseInt (string , radix)
- parseInt函数根据指定的基数radix生成一个整数值,该值由字符串参数string的内容解释决定。字符串中的前导空格被忽略。如果基数未定义或为0,则默认是10。
- String是你要转换的字符串,radix是进制。(所以默认是10进制呢)
- 例如:parseInt(‘1’)、parseInt(‘1’,0)以及parseInt(‘1’,10),结果都是1。
- 同理:parseInt(‘ABCD’,16)结果为43981,而parseInt(‘ABCD’,8)结果为NaN
由此可见: - 由于parseInt中只需要两个参数,parseInt(“1”,0,arr)、parseInt(“2”,1,arr)、parseInt(“3”,2,arr)
- 实为parseInt(“1”,0)、parseInt(“2”,1)、parseInt(“3”,2)。
- 只有parseInt(“1”,0)是能够被正确解析的,结果为1。
- parseInt(“2”,1)、parseInt(“3”,2)不能被正确解析,结果为NaN。