Javascript 为什么parseInt在与Array.map一起使用时返回NaN?

Javascript 为什么parseInt在与Array.map一起使用时返回NaN?,javascript,arrays,ecmascript-6,parseint,Javascript,Arrays,Ecmascript 6,Parseint,如果我使用parseInt映射数组,它将返回意外且不正确的结果: console.log[1234-04-231234,04,23].mapparseInt //=>[1234,NaN,0,2]因为map添加了第二个和第三个参数:索引和数组本身。见: ["1234-04-23", "1234", "04", "23"].map(console.log); // => 1234-04-23 0 ["1234-04-23", "1234", "04", "23"] // => 1234

如果我使用parseInt映射数组,它将返回意外且不正确的结果:

console.log[1234-04-231234,04,23].mapparseInt
//=>[1234,NaN,0,2]因为map添加了第二个和第三个参数:索引和数组本身。见:

["1234-04-23", "1234", "04", "23"].map(console.log);
// => 1234-04-23 0 ["1234-04-23", "1234", "04", "23"]
// => 1234 1 ["1234-04-23", "1234", "04", "23"]
// => 04 2 ["1234-04-23", "1234", "04", "23"]
// => 23 3 ["1234-04-23", "1234", "04", "23"]
正如您在中所看到的,parseInt还接受第二个参数作为基础,因此您实际上是这样做的:

console.log(["1234-04-23", "1234", "04", "23"].map((e, e2) => parseInt(e, e2)));
// => [1234, NaN, 0, 2]
这是因为:

parseInt在第一个无效字符处停止,并返回它所包含的任何内容 在那一点上,我有。如果没有要分析的有效字符,则 返回楠

源:

因为parseInt接受不止一个参数。此外,Array.map还会向回调传递多个参数。