为什么会这样?
var numbers = [ '1', '2', '3', '4' ];
var intNumbers = numbers.map( parseInt ); // intNumbers = [1, NaN, NaN, NaN]
var fltNumbers = numbers.map( parseFloat ); // fltNumbers = [1, 2, 3, 4, 5 ]
Run Code Online (Sandbox Code Playgroud)
但Array.prototype.map.call( numbers, parseInt );回报[ 1, 2, 3, 4];.我在Google Chrome 26.0.1410.65中运行此代码.
小智 4
评论中给出了正确答案的链接,但我想将其发布在这里:
Run Code Online (Sandbox Code Playgroud)["1", "2", "3"].map(parseInt);虽然人们可以期待
[1, 2, 3]实际结果是
[1, NaN, NaN]parseInt 通常与一个参数一起使用,但需要两个参数。第二个是基数 Array.prototype.map 向回调函数传递 3 个参数:元素、索引、数组
parseInt 会忽略第三个参数,但不会忽略第二个参数,因此可能会造成混淆。
快速解决
function returnInt(element){
return parseInt(element,10);
}
["1", "2", "3"].map(returnInt);
Run Code Online (Sandbox Code Playgroud)
实际结果是一个数字数组(如预期)
| 归档时间: |
|
| 查看次数: |
319 次 |
| 最近记录: |