2017-08-31 3 views
0

Je suis assez proche de faire fonctionner cela, mais je n'ai pas trouvé de réponse à ce problème. Je suis en train d'itérer sur cet objet que j'ai extrait de localStorage avec la méthode $ .each, mais pour une raison quelconque, je continue d'obtenir la première valeur (valeur d'image) pour tous les 3 endroits où j'ai de la valeur. Je cherche à obtenir le titre et l'info aussi. Toute aide est la bienvenue.

$('#btn-profile-view').on('click', function(){ 
 
    if(localStorage.getItem('itemsArray')){ 
 
    var savedLocal = localStorage.getItem('itemsArray'); 
 
    console.log('here is savedLocal: ', savedLocal); 
 
    savedLocal = JSON.parse(savedLocal); 
 
    var savedLocalMap = savedLocal.map(function(obj){ 
 
     var favsResult = $('.favs-display-data'); 
 
     $.each(obj, function(index, key, value){ 
 
     console.log('hey im value 0:', value); 
 
     favsOutput = `<div class="col-lg-3 game"> 
 
        <div class="view view-first"> 
 
        <img src="${value}"/> 
 
        <div class="mask"> 
 
         <h2>${value}</h2> 
 
         <p>${value}</p> 
 
         <a href="#" class="info">♥</a> 
 
        </div> 
 
        </div> 
 
       </div>` 
 
     favsResult.append(favsOutput); 
 
     }); 
 
    }); 
 
    } 
 
});

+0

Pouvez-vous montrer la sortie réelle par rapport à la sortie attendue? C'est un peu flou – neuhaus

+0

Oui, pour une raison quelconque, c'est juste saisir cette première valeur ... donc si mon tableau est "[{" gameImg ":" img/deathstranding.jpg "," gameTitle ":" Death Stranding "," gameInfo ":" Death Stranding est un prochain ..... "] ... est juste en train de saisir le gameImg 3 fois, et ne pas saisir le gameTitle et gameInfo ... – Lucky500

Répondre

2

Si vous connaissez les clés que vous devez les utiliser:

favsOutput = `<div class="col-lg-3 game"> 
       <div class="view view-first"> 
       <img src="${obj['gameImg']}"/> 
       <div class="mask"> 
        <h2>${obj['gameTitle']}</h2> 
        <p>${obj['gameInfo']}</p> 
        <a href="#" class="info">♥</a> 
       </div> 
       </div> 
      </div>` 

Si vous ne le faites pas, lorsque vous parcourez un hachage de l'ordre est aléatoire.

Aussi chaque prend deux arguments comme dit dans l'autre réponse.

+0

Merci Neuhas, pour une raison quelconque obj ['gameTitle'] , mais j'ai essayé obj.gameTitle et a bien fonctionné.Pour une raison quelconque est d'ajouter tout 3 fois, alors peut-être que j'ai un trop de boucles, mais votre réponse a fait le tour, merci! – Lucky500

+1

@ Lucky500 vous devez supprimer la boucle "each" – neuhaus

0

Le jquery chaque rappel prend pour autant que je ne vois que deux paramètres:

$.each(obj, function(key, value){ 
} 

Voir ici: http://api.jquery.com/jQuery.each/

Peut-être que ce qui est déjà le problème?