用map把字符串变成整数的坑

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

这结果居然是[1, NaN, NaN];求解!

阅读 4.2k
3 个回答

你可以看下MDN上的mappolyfill
https://developer.mozilla.org...

 mappedValue = callback.call(T, kValue, k, O);
 调用callback,参数是当前数组元素的值,index,和整个数组。

 arr.map(parseInt); 
 相当于
 arr.map(function(){
    return parseInt.apply(undefined,arguments);
 });
 arguments 就是默认kValue, k, O 这3个参数。
var arr = ['1','2','3'];
var r = arr.map(function(val){
    return parseInt(val);
});
console.log(r);

map提供两个参数 第一个是数据的值第二个 索引 parseInt接受两个参数,一个是值,一个是进制。所以分别执行pareInter(1,0) pareInter(2,1) pareInter(3,2)所以就1,NaN,NaN

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题