2012-06-16 73 views
2

你好,我有一個JavaScript的問題,由此我得到一個JSON結果:如何從JSON響應中獲取逗號分隔的列表?

{"0":"San Diego acls","1":"San Diego pals","2":" San Diego CPR","3":" Temecula acls","4":" Temecula pals"} 

存儲在一個變量稱爲數據。

我要分析此數據變量,並像一個列表:

San Diego acls, San Diego pals, San Diego CPR, Temecula acls, Temecula pals 

任何優雅的方式?

謝謝

+2

'VAR值= { 「0」: 「聖地亞哥的ACL」, 「1」: 「聖地亞哥好朋友」, 「2」: 「聖地亞哥CPR」, 「3」: 「Temecula acls」,「4」:「Temecula pals」}''''''''''''''''''''''''''''''''這是因爲你有合適的鍵和在做比較時,JS會正確地轉換它們。 –

回答

0

這在Javascript中非常簡單。您可以訪問變量data這樣的:

alert(data[0]); 

應警惕「聖地亞哥的ACL」。對所有人使用循環做同樣的事情。您可以輕鬆地將字符串與+運算符連接起來。

var result = ""; 
for (var dString in data) { 
    result += dString + ", "; 
} 

這將創建一個名爲result串並添加字符串元素的數組進去。它還會在問題中描述的每個元素之間添加「,」。

+0

我這樣做了,但循環從不玩。長度似乎沒有工作。然而,我可以訪問數據[0]等元素。 – jini

+0

我不知道你什麼時候嘗試過,但是當我第一次回答時,我在長度方面犯了一個錯誤。它應該是現在的'data.length'。那是你正在嘗試的嗎? – Hassan

+0

@jini:它是因爲它的一個對象,而不是一個數組。 – SuperSaiyan

5

你需要的是這樣的:

var res = []; 
for (var x in obj) 
    if (obj.hasOwnProperty(x)) 
     res.push(obj[x]); 
console.log(res.join(",")); 

而且還有的 '優雅' 做另一種方式(從Alex's answer拍攝),

res = []; 
Object.keys(obj).forEach(function(key) { 
    res.push(obj[key]); 
}); 
console.log(res.join(",")); 

如果您需要以特定順序得到結果,在對數組調用forEach之前對鍵(來自Object.keys(obj))進行排序將有所幫助。這樣的事情:

Object.keys(obj).sort().forEach(function(key) { 
+0

+1這是正確的做法,我的錯誤。 – Hassan

+0

這不保證以與密鑰相同的順序產生列表;即項目0可能會最後,項目1可能會先來,等等。 – Ashe

+0

@Len:它是一個對象。沒有特定的順序。如果你想要一個,在你調用'forEach'之前對'Object.keys(obj)'做一個排序。 – SuperSaiyan

0

這一個也適用。

$(document).ready(function(){ 
    var data = {"0":"San Diego acls","1":"San Diego pals","2":" San Diego CPR","3":" Temecula acls","4":" Temecula pals"}; 
    var csv = $.map(data,function(data){ return data;}); 
    alert(csv); 
}); 

jsfiddle DEMO

相關問題