jquery $cada () para objetos


<script>
    $(document).ready(function() {
        var data = { "programs": [ { "name":"zonealarm", "price":"500" }, { "name":"kaspersky", "price":"200" } ] };
        $.each(data.programs[0], function(key,val) {
            alert(key+val);
        });
    });
</script>

Este código recupera los primeros datos. name:zonealarm y price:500. ¿Cómo puedo recuperar todos los datos del objeto? Intenté $.each(data.programs, function(key,val) pero no funcionó. ¿Debería ponerlo en un bucle?

 29
Author: Brian, 2011-06-02

3 answers

$.each() funciona tanto para objetos como para matrices:

var data = { "programs": [ { "name":"zonealarm", "price":"500" }, { "name":"kaspersky", "price":"200" } ] };

$.each(data.programs, function (i) {
    $.each(data.programs[i], function (key, val) {
        alert(key + val);
    });
});

...y dado que obtendrá el elemento array actual como segundo argumento:

$.each(data.programs, function (i, currProgram) {
    $.each(currProgram, function (key, val) {
        alert(key + val);
    });
});
 76
Author: Tomalak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-08 20:03:12

De hecho, está pasando el primer elemento de datos a la función each.

Pasar datos.programas a la función each en su lugar. Cambie el código a la siguiente:

<script>     
    $(document).ready(function() {         
        var data = { "programs": [ { "name":"zonealarm", "price":"500" }, { "name":"kaspersky", "price":"200" } ] };         
        $.each(data.programs, function(key,val) {             
            alert(key+val);         
        });     
    }); 
</script> 
 7
Author: Chandu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-01 21:42:22

Básicamente necesitas hacer dos bucles aquí. El que ya está haciendo es iterar cada elemento en el elemento 0th array.

Tienes programas: [{...}, {...} ] so programs [0] es { "name": "zonealarm", "price": "500" } Así que su bucle está pasando por eso.

Se podría hacer un bucle externo sobre el array

$.each(data.programs, function(index) {

    // then loop over the object elements
    $.each(data.programs[index], function(key, value) {
        console.log(key + ": " + value);
    }

}
 4
Author: Morgan ARR Allen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-30 18:23:19