意外的“映射”结果(Javascript)

意外的“映射”结果(Javascript),javascript,map,Javascript,Map,有人能解释一下为什么会产生意想不到的结果: ["1", "2", "3"].map(parseInt); var _parseInt = function(radix, number) { return parseInt(number, radix); } ["1", "2", "3"].map(_parseInt.bind(this, 10)); 哪个返回[1,NaN,NaN],而不是[1,2,3] 我可以通过强制使用单参数函数来实现: ["1", "2", "3"].map(func

有人能解释一下为什么会产生意想不到的结果:

["1", "2", "3"].map(parseInt);
var _parseInt = function(radix, number) {
  return parseInt(number, radix);
}
["1", "2", "3"].map(_parseInt.bind(this, 10));
哪个返回[1,NaN,NaN],而不是[1,2,3]

我可以通过强制使用单参数函数来实现:

["1", "2", "3"].map(function(s) {return parseInt(s);});

但我不知道第一步到底出了什么问题。

本文在最后一个示例中描述了您的问题,与您试图做的完全相同。然而,他们提到的博客文章已经不存在了

以下是一个更好的答案:

因此,如果调用一个实际需要两个参数的函数 第二个参数是元素的索引

在本例中,您最终使用中的基数0、1和2调用了parseInt 转动第一个与不提供参数相同,因此 默认以10为基数。基数1是不可能的数字基数,而基数3是不可能的数字基数 基数2中的数字无效:


本文在最后一个示例中描述了您的问题,与您试图做的完全相同。然而,他们提到的博客文章已经不存在了

以下是一个更好的答案:

因此,如果调用一个实际需要两个参数的函数 第二个参数是元素的索引

在本例中,您最终使用中的基数0、1和2调用了parseInt 转动第一个与不提供参数相同,因此 默认以10为基数。基数1是不可能的数字基数,而基数3是不可能的数字基数 基数2中的数字无效:

parseInt接受两个参数,第二个是基数,这就是为什么它不起作用。有关更多信息,请参阅本页底部。引用:

parseInt通常与一个参数一起使用,但需要两个参数。第二 Array.prototype.map作为回调函数的基数,传递3 参数:元素、索引、数组。第三个论点是 被parseInt忽略,但不是第二个,因此 混乱

parseInt接受两个参数,第二个是基数,这就是为什么它不起作用。有关更多信息,请参阅本页底部。引用:

parseInt通常与一个参数一起使用,但需要两个参数。第二 Array.prototype.map作为回调函数的基数,传递3 参数:元素、索引、数组。第三个论点是 被parseInt忽略,但不是第二个,因此 混乱


正如其他人提到的,问题是由于第二个论点

意见来自:

但是,通过使用,您可以达到预期的效果:

["1", "2", "3"].map(parseInt);
var _parseInt = function(radix, number) {
  return parseInt(number, radix);
}
["1", "2", "3"].map(_parseInt.bind(this, 10));

正如其他人提到的,问题是由于第二个论点

意见来自:

但是,通过使用,您可以达到预期的效果:

["1", "2", "3"].map(parseInt);
var _parseInt = function(radix, number) {
  return parseInt(number, radix);
}
["1", "2", "3"].map(_parseInt.bind(this, 10));