Javascript Array.prototype.map的行为不符合预期

时间:2014-01-02 17:03:13

标签: javascript

当我尝试使用带有parseInt(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)的Javascript地图时,只有第一个元素可以正确调用回调。

version = '10.9.8.11.11';
v = version.split('.');
vp = [];

for (var i = 0; i < 5; i++) {
    vp[i] = parseInt(v[i]);
}

alert(vp + '\n' + v.map(parseInt) + '\n'); 

给出

10,9,8,11,11
10,NaN,NaN,4,5

如此处所示:http://jsfiddle.net/69wpB/

我做错了什么?我在Ubuntu和Windows上的Chrome和Firefox中都有相同的行为。

2 个答案:

答案 0 :(得分:3)

Array.prototype.map将多个参数传递给回调。

parseInt使用第二个参数作为基数来确定如何解析整数。

map(function (str) {
    return parseInt(str, 10);
})

应该按预期工作。

答案 1 :(得分:3)

您已经有一个答案和评论链接到解释问题的文档页面,所以我不会添加另一个文档链接。

我只是添加一种更方便的解析方法,而不是定义一个新函数:

var numbers = version.split('.').map(Number);