2010-07-26 10 views
1

Je suis en train de boucler sur chaque valeur dans mon dictionnaire, puis aller chercher un autre dictionnaire basé sur l'un des objets dans le premier dictionnaire à travers chaque itération de boucle:Itère un dictionnaire ajouter à un autre

var dAlbumPhotos = {}; // holds a list of photo objects 
var dAlbumsAndPhotos = {}; // will hold all the album | dAlbumPhotos for each album 

for(var a in dAlbums) 
{ 
    dAlbumPhotos = GetPhotosForAlbum(userID, accessToken, a.id); 

    dAlbumsAndPhotos(a) = dAlbumPhotos; 
} 

Je ne suis pas sûr de savoir comment faire cela sans index. Je dois incrémenter à travers le dAlbumPhotos et ajouter au dictionnaire final cet album et il est dAlbumPhotos

Répondre

3

Il semble que vous utilisez vraiment un tableau Associatif en Javascript, vous devriez donc être en mesure de changer le dernier bit de votre code pour être:

for(var a in dAlbums) 
{ 
    dAlbumPhotos = GetPhotosForAlbum(userID, accessToken, dAlbums[a].id); 
    dAlbumsAndPhotos[a] = dAlbumPhotos; 
} 
+0

mais c'est un dictionnaire ... – PositiveGuy

+1

@coffeeaddict - En fait, c'est un tableau associatif (qui est ce que toutes les propriétés de l'objet sont en Javascript): http://www.quirksmode.org/js/associative.html. –

+1

merci ... je ne savais pas que c'était un tableau associatif ... pensé que cette NVP était quelque chose d'autre. – PositiveGuy

0

Une boucle for..in vous renvoie les index, pas les objets dans la boucle. C'est, a.id est probablement absurde - vous voulez vraiment dire dAlbums[a].id. Il s'ensuit que dAlbumsAndPhotos[a] est probablement où vous avez besoin de stocker les résultats.

+0

Je crée un dictionnaire qui contient des paires de valeurs de nom ... alors dAlbumsAndPhotos détiendront un objet album: dictionaryOfPhotoObjects – PositiveGuy

+0

Je ne comprenaient pas comment référencer l'index pour les dAlbumsAndPhotos lorsque en essayant d'ajouter chaque album et son dictionnaire de paires de photos – PositiveGuy

2

Je pense que c'est ce que vous êtes après:

var dAlbumPhotos = {};  // holds a list of photo objects 
var dAlbumsAndPhotos = {}; // will hold all the album | dAlbumPhotos for each album 

for(var a in dAlbums) 
{ 
    dAlbumPhotos = GetPhotosForAlbum(userID, accessToken, dAlbums[a]); 

    dAlbumsAndPhotos[a] = dAlbumPhotos; 
} 
+0

ok, oui d'abord cela a tout à fait raison maintenant. Juste ne comprends pas comment l'index de dAlbumsAndPhotos fonctionne ici ou être référencé. – PositiveGuy

0

Supposons que vous ayez les données de photo dans un tableau JSON comme celui-ci:

var dPhotos = [{src: "/photos/a.jpg", album: "animals"}, {src: "/photos/b.jpg", album: "landscapes"}]; 

Th en vous pouvez utiliser Jörder pour extraire l'indice du groupe comme celui-ci:

var table = jOrder(dPhotos) 
    .index('album', ['album'], {grouped: true}); 

var index = table.index('album').flat(); 

Cet indice tiendra un dictionnaire des noms d'album associés à la liste des ids de lignes dPhotos appartenant à cet album.

Jörder est disponible à partir http://github.com/danstocker/jorder

Questions connexes