How do I fetch values from a hierarchical object when the references are in an array?

arrays, javascript, javascript-objects

Solution

function getNested(obj, ar_keys) {
    var innerObj = obj;
    for(var i=0,il=ar_keys.length; i<il; i++){
      innerObj = innerObj[ar_keys[i]];
    }
    return innerObj;
}

You would call it with

 getNested(x['locations'], ar_keys);

where x is your object and ar_keys is the array of keys.

Problem

I have the following object ``` { "locations": { "Base 1": { "title": "This is base 1", "Suburb 1": { "title": "Suburb 1 in Base 1", "Area A": { "title": "Title for Area A", "Street S1": { "title": "Street S1 title" }, "Street C4": { "title": "Street C4 title" }, "Street B7": { "title": "Street B7 title" } }, "Another Area": { "title": "Title for Area A", "Street S1": { "title": "Street S1 title" }, "Street C4": { "title": "Street C4 title" }, "Street B7": { "title": "Street B7 title" } } }, "Another Suburb": { "title": "Suburb 1 in Base 1", "Area A": { "title": "Title for Area A", "Street S1": { "title": "Street S1 title" }, "Street C4": { "title": "Street C4 title" }, "Street B7": { "title": "Street B7 title" } }, "Another Area": { "title": "Title for Area A", "Street S1": { "title": "Street S1 title" }, "Street C4": { "title": "Street C4 title" }, "Street B7": { "title": "Street B7 title" } } } }, "Base2": {} } } ``` I'm given arrays to fetch "titles" from the "locations" object and each array can be different. I know I can access individual values like so : ``` locations["Base 1"]["title"] locations["Base 1"]["Another Suburb"]["title"] locations["Base 1"]["Another Suburb"]["Area A"]["title"] etc etc. ``` But I'm not sure how to get the value of title if I'm given arrays like so : ``` AnArray = ["Base 1", "title"]; AnArray = ["Base 1", "Another Suburb", "title"]; AnArray = ["Base 1", "Another Suburb", "Area A", "title"]; AnArray = ["Base 1", "Another Suburb", "Another Area", "title"]; ``` Is there a way to parse / work with these arrays so each returns the correct title value from the locations object? I have to fetch the value of the title in each case, and I'm not even sure where to start. I tried joining the array and then fetching the 'title' values but that didn't seem to work. Noob here, so please don't mind if the question sounds stupid / or makes no sense. So the question is, how do I fetch values from a hierarchical object when the references are in an array ?

Original source

Related problems