web-dev-qa-db-fra.com

jquery $ .each () pour les objets

<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>

Ce code récupère les premières données. name:zonealarm Et price:500. Comment puis-je récupérer toutes les données de l'objet? J'ai essayé $.each(data.programs, function(key,val) mais cela n'a pas fonctionné. Dois-je le mettre en boucle?

38
matiasdelgado

$.each() fonctionne pour les objets et les tableaux à la fois:

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);
    });
});

... et puisque vous obtiendrez l’élément de tableau actuel comme second argument:

$.each(data.programs, function (i, currProgram) {
    $.each(currProgram, function (key, val) {
        alert(key + val);
    });
});
94
Tomalak

Vous passez en effet le premier élément de données à chaque fonction.

Passez data.programs à chaque fonction. Changez le code comme ci-dessous:

<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> 
8
Chandu

Fondamentalement, vous devez faire deux boucles ici. Celui que vous êtes déjà en train d'itérer chaque élément dans le 0ème élément du tableau.

Vous avez des programmes: [{...}, {...}], donc les programmes [0] sont {"name": "zonealarm", "price": "500"} Ainsi, votre boucle ne fait que passer par-dessus.

Vous pouvez faire une boucle externe sur le tableau

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

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

}
4
Morgan ARR Allen