console.log("1,2,3".split(",").map(parseInt))
打印
[1, NaN, NaN]
为什么?
在这里添加一些不必要的文本,使这个问题“符合SO质量标准”,无论这意味着什么。
答案 0 :(得分:10)
.map
使用三个参数调用parseInt()
- 值,数组索引和数组本身。
index
参数被视为基数:
parseInt('1', 0, a); // OK - gives 1
parseInt('2', 1, a); // FAIL - 1 isn't a legal radix
parseInt('3', 2, a); // FAIL - 3 isn't legal in base 2
答案 1 :(得分:3)
这里将详细讨论:http://www.wirfs-brock.com/allen/posts/166。提出解决这个问题的方法,以及明显的
a.map(function(e) { return parseInt(e, 10)})
还包括Number构造函数:
a.map(Number)
或基于部分应用的解决方案(有关详情,请参阅http://msdn.microsoft.com/en-us/scriptjunkie/gg575560):
Function.prototype.partial = function(/*args*/) {
var a = [].slice.call(arguments, 0), f = this;
return function() {
var b = [].slice.call(arguments, 0);
return f.apply(this, a.map(function(e) {
return e === undefined ? b.shift() : e;
}));
}
};
["1", "2", "08"].map(parseInt.partial(undefined, 10))
答案 2 :(得分:3)
.map使用三个参数调用parseInt() - 值,数组索引和整个数组实例。