JavaScript:parseInt';带Array.map的s基数奥秘

JavaScript:parseInt';带Array.map的s基数奥秘,javascript,Javascript,当我执行以下语句时: var string=“1 1 0 1 1” console.log(字符串) var strings=string.split(“”) console.log(字符串) var numbers1=strings.map(parseInt) 控制台日志(编号1) var numbers2=strings.map(函数(i){return parseInt(i,10)}) 控制台日志(编号2) 我在控制台中获得以下输出: 1 1 1 1 1 1 0 1 1 ["1", "1

当我执行以下语句时:

var string=“1 1 0 1 1”
console.log(字符串)
var strings=string.split(“”)
console.log(字符串)
var numbers1=strings.map(parseInt)
控制台日志(编号1)
var numbers2=strings.map(函数(i){return parseInt(i,10)})
控制台日志(编号2)
我在控制台中获得以下输出:

1 1 1 1 1 1 0 1 1
["1", "1", "1", "1", "1", "1", "0", "1", "1"]
[1, NaN, 1, 1, 1, 1, 0, 1, 1]
[1, 1, 1, 1, 1, 1, 0, 1, 1]

我想知道为什么
numbers1
中的第二个元素是NaN。为什么它对除此之外的所有其他元素都起作用?

这是因为
map
传递附加参数

Array.prototype.map = function(currentValue, index, array)
* string
* radix
因此,当它位于索引1时,它将1作为基数传递。

有三个参数传递给我们设置为参数的回调:

* value
* index
* arr
当我们检查的规范时,我们可以看到parseInt可以接收两个参数

Array.prototype.map = function(currentValue, index, array)
* string
* radix
前者是要分析的字符串,后者是转换值的比率

当我们运行Snippet 1代码时,下面是

>parseInt(“1”,0)//1

>parseInt(“1”,1)//NaN

>parseInt(“1”,2)//1

>parseInt(“1”,3)//1


您可以与
parseInt一起使用

array.map(e => parseInt(e, 10));
使用而不是
parseInt

arr.map(Number);
或者也可以使用匿名函数

arr.map(function(num) {
    return parseInt(num, 10);
});