$.each() with nested array
23,894
Solution 1
If you want to use $.each
you can try this:-
$.each(myArray.songs, function (i, ob) {
$.each(ob, function (ind, obj) {
console.log("key:" + ind + " value:" + obj);
});
});
Solution 2
If you are trying to loop through all of the songs, myArray.songs
is an array with one object in it.
Try this:
$.each(myArray.songs[0], function(e, i) {
console.log('e:' + e + ' - i:' + i);
});
And check out this jsFiddle http://jsfiddle.net/TsJP5/1/.
Author by
Anthony Honciano
Updated on December 18, 2020Comments
-
Anthony Honciano over 3 years
First of all, forgive me if I didn't identify the right type of array, however I can't seem to figure this out.
I'm trying to run this array in query:
var myArray = {"artists":[{ "a1":"Adam Sandler", "a2":"Adam Lambert", "a3":"Avril Levine", "a4":"Backstreet Boys", "a5":"Blackstreet", "a6":"Black Eye Peas", "a7":"Cool and the Gang", "a8":"Chicago", "a9":"Charlie Manson" }], "songs":[{ "s1":"Grow Old With You", "s2":"Whatdaya Want From Me", "s3":"Yea yea", "s4":"Quit Playing Games With My Heart", "s5":"No Digity", "s6":"Meet Me Half way", "s7":"Doo wa ditty", "s8":"Fight for your honor", "s9":"Charlies Song" }], "genre":[{ "g1":"Pop", "g2":"Pop", "g3":"Alternative", "g4":"R & B", "g5":"R & B", "g6":"Hip-Hop", "g7":"Funk", "g8":"Soft Rock", "g9":"Rock" }]};
When I click a button (say for title) I don't know how to have it automatically go through the array. This is what I have for my button:
$.each(myArray.songs, function(e,i){ console.log("e:"+e+" - i:"+i+" - "+myArray.songs[e].i); });
This does work, however when it reaches to the console.log, this is what I get:
e:0 - i:[object Object] - undefined
I don't know how to get "i" to work, it always gives me [Object Object]. I replace I with the actual id in the array, it works.
Thank you.
-
Anthony Honciano over 11 yearsThis totally worked! Thank you all for your input, I'm jsut learning JSON, so I apologize if this confused everyone or if it's not used right. I wasn't being thrown an errors, so I assumed it was fine.
-
Anthony Honciano over 11 yearsThis also worked for me too!! You guys are super awesome for your help!
-
tjb1982 over 11 yearsNot all browsers support .forEach so you might have to modify the array prototype in order to use it like this:
if (!('forEach' in Array.prototype)) Array.prototype.forEach = function() { ... };
see stackoverflow.com/questions/8348569/… for implementation details