Javascript 数组映射和parseInt问题

Javascript 数组映射和parseInt问题,javascript,string,Javascript,String,鉴于以下情况: > '10.0.0.1'.split('.').map(parseInt) [10, NaN, 0, 1] 为什么不改为输出: [10, 0, 0, 1] 尽管以下情况成立: > x = '10.0.0.1'.split('.'); ["10", "0", "0", "1"] > x[1] == x[2] true 或者,使用parseFloat可以获得所需的输出;然而,我觉得我错过了一些关键的东西 编辑:'10.0.0.1'。拆分('.').map(函

鉴于以下情况:

> '10.0.0.1'.split('.').map(parseInt)
[10, NaN, 0, 1]
为什么不改为输出:

[10, 0, 0, 1]
尽管以下情况成立:

> x = '10.0.0.1'.split('.');
["10", "0", "0", "1"]

> x[1] == x[2]
true
或者,使用
parseFloat
可以获得所需的输出;然而,我觉得我错过了一些关键的东西

编辑:
'10.0.0.1'。拆分('.').map(函数(x){return parseInt(x);})
按预期工作


EDIT2:我使用的是Chrome版本26.0.1410.64,但这也发生在我的本地node.js副本中。

请查看此链接底部的“棘手用例”,它解释了
NaN

通常使用带有一个参数(正在遍历的元素)的回调。某些函数也通常与一个参数一起使用。这些习惯可能导致令人困惑的行为

// Consider:
["1", "2", "3"].map(parseInt);
// While one could expect [1, 2, 3]
// The actual result is [1, NaN, NaN]

// parseInt is often used with one argument, but takes two. The second being the radix
// To the callback function, Array.prototype.map passes 3 arguments: the element, the index, the array
// The third argument is ignored by parseInt, but not the second one, hence the possible confusion.
// See the blog post for more details

// Solution:
function returnInt(element){
  return parseInt(element,10);
}

["1", "2", "3"].map(returnInt);
// Actual result is an array of numbers (as expected) [1, 2, 3]

快速解决方案,使用
parseFloat

'10.0.0.1'.split('.').map(parseFloat); //=> [10,0,0,1]

为什么
parseInt
不能按预期工作?回答这里:

+1,为了速度和准确性!谢谢我知道会是这样的,但不确定搜索条件。很好的答案+1。你举的例子正是让我难堪的地方!我想知道为什么我在Chrome和Firefox上得到不同的结果,但那是因为基数未定义时的行为取决于实现。我现在对Mozilla文档为什么说“在使用
parseInt
时始终指定基数”有了更广泛的理解