$.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/.

Share:
23,894
Anthony Honciano
Author by

Anthony Honciano

Updated on December 18, 2020

Comments

  • Anthony Honciano
    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
    Anthony Honciano over 11 years
    This 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
    Anthony Honciano over 11 years
    This also worked for me too!! You guys are super awesome for your help!
  • tjb1982
    tjb1982 over 11 years
    Not 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