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

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

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

所以我继续做一个:

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

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

var number = parseInt(item, 10);

控制台记录什么数字是......它的NaN(不应该是57300、730等没有引号吗?)。是一些隐藏的字符惹恼了我导致 parseInt 中断吗?

4

2 回答 2

2

根据您的帖子,您将字符串拆分为逗号,这意味着您将在数字周围留下引号。这意味着您正在执行相当于 parseInt("\"573007\"") 的操作。您需要在调用 parseInt 之前去掉引号。

于 2012-11-28T17:54:37.490 回答
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);
});

演示:http: //jsfiddle.net/mYysX/

于 2012-11-28T18:12:21.437 回答