Javascript parseInt()在包含数字的字符串文字上返回NaN

时间:2012-11-28 17:52:47

标签: javascript parsing

["57300","730","17300","17330","17340","70","220","320","380","420","340","130","50","280","360","550","43110","44340","400","620","440","20","72850"]

是否将一个字符串数组传递回javascript函数,该函数继续对其进行处理以将其分解为字符串数组(使用带有“,”作为分隔符的split函数)。

这里的问题是,我需要将之后的每个转换为整数。听起来很容易。

所以我继续做:

$.each(data, function(i, item)

就可以了。如果我控制台登录该项目,我可以看到它是“57300”,“730”等等。这很好。但如果我尝试这样做:

var number = parseInt(item, 10);

并且控制台记录的是什么号码......它的NaN(不应该是没有引号的57300,730等?)。是否有一些隐藏的角色搞砸了我导致parseInt破坏?

2 个答案:

答案 0 :(得分:2)

根据你的帖子,你在逗号上分割字符串,这意味着你要在数字周围留下引号。这意味着你正在做相当于parseInt(“\”573007 \“”)。在调用parseInt之前,您需要删除引号。

答案 1 :(得分:2)

我认为你的初始字符串如下所示,

var result = '"57300","730","17300","17330"';

由于您将,拆分为分隔符,因此最终会得到如下所示,

data = ["\"57300\"","\"730\"","\"17300\"","\"17330\""]; 

基本上是带引号的字符串..当您使用parseInt

进行解析时
parseInt("\"57300\"", 10); //throws NaN

<强>解决方案:

相反,您可以使用[]而不是split使用parseJSON函数来包装该数据。见下文,

var result = '"57300","730","17300","17330"';

result = '[' + result + ']';

var data = $.parseJSON(result);

$.each(data, function (i, item) {
    var number = parseInt(item, 10);
    alert(number);
});

DEMO: http://jsfiddle.net/mYysX/