当我尝试使用带有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中都有相同的行为。
答案 0 :(得分:3)
Array.prototype.map
将多个参数传递给回调。
parseInt
使用第二个参数作为基数来确定如何解析整数。
map(function (str) {
return parseInt(str, 10);
})
应该按预期工作。
答案 1 :(得分:3)
您已经有一个答案和评论链接到解释问题的文档页面,所以我不会添加另一个文档链接。
我只是添加一种更方便的解析方法,而不是定义一个新函数:
var numbers = version.split('.').map(Number);