2012-06-16 39 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

相关问题