问题:

var arrs = ['1', '2', '3']; 
var r = arrs.map(parseInt); 
alert(r);//1,NaN,NaN

map

 arr.map(function callback(currentValue[, index[, array]]) {
    // Return element for new_array
}[, thisArg])

parseInt

parseInt(string, radix);

因为map()接收三个参数,parseInt()接收两个参数,所以map的第三个参数被parseInt忽略了。
现在来分析下程序,假如现在执行arr的第一个元素,即'1';对应到map参数可知,此时传入map的第一个参数即为被传递的元素'1';第二个参数即为其索引0;
这两个参数被传入parseInt中,即parseInt('1', 0);对应到上述parsent的参数规则可知,此时结果为1;
同理,parseInt('2',1) //radix小于2 返回NaN
parseInt('3',2) //3是非法的二进制数,返回NaN

解决:

function  parseInt_base10(s)
{
    return parseInt(s,10);
}

r = arrs.map(parseInt_base10,arrs);
//或者r = arrs.map(parseInt_base10);
alert(r);//[1,2,3]

相关文章:

  • 2021-08-28
  • 2021-12-07
  • 2022-12-23
  • 2022-01-16
  • 2021-09-16
  • 2021-11-01
猜你喜欢
  • 2021-12-20
  • 2022-12-23
  • 2022-01-08
  • 2022-01-29
  • 2021-08-21
  • 2022-01-25
  • 2022-12-23
相关资源
相似解决方案