JavaScript中用map()函数把字符串变成整数

在学习JavaScript的高阶函数时,遇到一个关于map()函数的问题,在实际操做中,如下代码输出了意想不到的结果:函数

'use strict';
var arr = ['1', '2', '3'];
var r;
r = arr.map(parseInt);
alert('[' + r[0] + ', ' + r[1] + ', ' + r[2] + ']');

结果是[1, NaN, NaN]。
通过查阅Array.prototype.map()的文档,深刻了解了map()函数的做用机制,因为map()接收的回调函数能够有3个参数:callback(currentValue, index, array),一般咱们仅须要第一个参数,而忽略了传入的后面两个参数。不幸的是,parseInt(string, radix)没有忽略第二个参数,致使实际执行的函数分别是:学习

  • parseInt('0', 0); // 0, 按十进制转换prototype

  • parseInt('1', 1); // NaN, 没有一进制code

  • parseInt('2', 2); // NaN, 按二进制转换不容许出现2ip

能够改成r = arr.map(Number);,由于Number(value)函数仅接收一个参数;
或者使用以下代码解决parseInt()的转换问题:文档

var arr = ['1','2','3'];
var r = arr.map(function(val){
    return parseInt(val);
});
console.log(r);
相关文章
相关标签/搜索