2010-11-20 108 views
17

如何迭代jQuery中的json数据。如何在jQuery中迭代json数据

[{"id":"856","name":"India"}, 
{"id":"1035","name":"Chennai"}, 
{"id":"1048","name":"Delhi"}, 
{"id":"1113","name":"Lucknow"}, 
{"id":"1114","name":"Bangalore"}, 
{"id":"1115","name":"Ahmedabad"}, 
{"id":"1116","name":"Cochin"}, 
{"id":"1117","name":"London"}, 
{"id":"1118","name":"New York"}, 
{"id":"1119","name":"California"} 
] 

回答

44

您可以使用$.each()这样的:

$.each(data, function(i, obj) { 
    //use obj.id and obj.name here, for example: 
    alert(obj.name); 
}); 
+1

如果我不知道JSON对象中的键和值的名称,该怎么办? – plutonium1991 2015-07-09 12:43:51

+0

参数列表中的“i”和“obj”是什么? – 2015-09-04 12:02:22

+2

@Adamnick我会冒险猜测'i'是索引,'obj'是组成每个元素的对象。 – Opux 2016-02-04 19:05:03

2

您可以使用.each()功能:

$(yourjsondata).each(function(index, element) { 
    alert('id: ' + element.id + ', name: ' + element.name); 
}); 
+0

'.each()'用于在jQuery对象上运行,按照预期使用'$ .each()'。 – 2010-11-20 15:11:17

+0

@Nick,我认为从jquery选择器返回的jquery对象是普通数组。我同意你的看法,在这种情况下,静态的'.each'方法会更合适。 – 2010-11-20 15:13:28

+0

他们也有一堆其他的属性,你可以使用'.get()'(内部是'.toArray()')来获取一个DOM元素的基本数组。 – 2010-11-20 15:16:17

6

你可以使用常规的JavaScript太,我认为这将是一个有点更快(虽然我不确定jQuery如何优化each):

var data = [{"id":"856","name":"India"}, 
{"id":"1035","name":"Chennai"}, 
{"id":"1048","name":"Delhi"}, 
{"id":"1113","name":"Lucknow"}, 
{"id":"1114","name":"Bangalore"}, 
{"id":"1115","name":"Ahmedabad"}, 
{"id":"1116","name":"Cochin"}, 
{"id":"1117","name":"London"}, 
{"id":"1118","name":"New York"}, 
{"id":"1119","name":"California"} 
]; 

var data_length = data.length; 
for (var i = 0; i < data_length; i++) { 
    alert(data[i]["id"] + " " + data[i]["name"]); 
} 

编辑反思与$。每个函数的所有对象的属性尼克的有关性能

+1

这取决于,访问'.length'不是微不足道的,所以如果性能是一个问题,那么最好缓存它。 – 2010-11-20 15:15:26

+0

我同意,如果它是一个大型数组(编辑我的文章) – cambraca 2010-11-20 15:18:11

2

迭代建议。在每次迭代中,您将获得名称/密钥和属性值:

$.each(data, function(key, val) { 
    alert(key+ " *** " + val); 
});