2012-11-28 40 views
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函數,功能以「,」作爲分隔符)。Javascript parseInt()在包含數字的字符串文字上返回NaN

這裏的問題是,我需要將其中的每一個轉換爲一個整數。聽起來很容易。

於是我着手做了:

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

就可以了。如果我控制檯登錄項目,我可以看到它是「57300」,「730」等等。這很好。但是,如果我嘗試這樣做:

var number = parseInt(item, 10); 

和控制檯日誌什麼號碼是...它的NaN(豈不是57300,730,等不帶引號?)。是否有一些隱藏的角色與我混淆導致parseInt突破?

+0

他們似乎是'[ 「\」 57300 \ 「」, 「\」 730 \ 「」,...]'而不是'[」 57300「,」730「,...]' – Esailija

+4

無法重新創建:http://jsfiddle.net/TSJ8J/ – Shmiddty

+1

請提供* actual *代碼。你爲什麼需要拆分?爲什麼你的「數組」是一個字符串?你不解碼你的JSON數據嗎? – phant0m

回答

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/

+0

謝謝,非常全面。 –

2

根據你的帖子,你正在分割字符串的逗號,這意味着你要離開報價周圍的數字。這意味着你正在做相當於parseInt(「\」573007 \「」)。您需要在調用parseInt之前去除引號。

+0

我不這麼認爲......「 parseInt'將其轉換爲數字。 '分析字符串參數並返回指定基數或基數的整數。「 - 來自MDN的定義 –

+0

是的,它是正確的。他正在做相當於parseInt(「\」573007 \「」),因爲他已將字符串拆分爲逗號而不刪除引號。結果是NaN。 http://jsfiddle.net/EFwcx/ –

+0

@從OP_array的字符串傳遞迴到一個JavaScript函數_ - 我相信他已經有一個數組了。它不是一個單一的字符串。 –

相關問題