2010-11-20 11 views
17

la forma de repetición de los datos JSON en jQuery.la forma de repetición de datos JSON jQuery

[{"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"} 
] 

Respuesta

44

Puede utilizar $.each() así:

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

¿Qué sucede si no sé los nombres de la clave y los valores del objeto JSON? – plutonium1991

+0

¿Qué es 'i' y' obj' en la lista de argumentos? –

+2

@Adamnick Supongo que 'i' es el índice y' obj' es el objeto que compone cada elemento. – Opux

2

usted podría utilizar la función .each():

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

'each()' está destinado para operar sobre objetos jQuery, que no están destinados a contener matrices ordinarias, mejor use '$ .each()' como estaba previsto. –

+0

@Nick, pensé que los objetos jquery como los devueltos por los selectores de jquery eran matrices ordinarias. Estoy de acuerdo con usted en que en este caso el método estático '$ .each' sería más apropiado. –

+0

tienen un montón de otras propiedades también, puedes usar '.get()' (que internamente es '.toArray()') para obtener una matriz básica de elementos DOM. –

6

Usted sólo puede usar javascript regulares también, que creo que sería un poco más rápido (aunque no estoy muy seguro de cómo optimiza 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"]); 
} 

editado para reflejar la sugerencia de Nick sobre el rendimiento

+1

Depende, el acceso a '.length' no es trivial, así que mejor guardarlo en caché si el rendimiento es una preocupación. –

+0

Acepto, si es una gran matriz (edité mi publicación) – cambraca

2

iterar sobre todas las propiedades del objeto con la función $ each. en cada iteración que obtendrá la tecla/nombre y el valor de la propiedad:

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