javascript – Accessing a property's value via a String

Question:

Suppose I have the following object:

var pessoa = {
    nome: "João",
    animais: {
        cachorro: "Rex",
        gato: "Pipoca",
    }
}

I need a function to do something like this:

var gatoDoJoao = pessoa["animais.gato"];

I know that in this example the correct one is pessoa.animais.gato , but I want the value to be accessed via a string. Something like: var gatoDoJoao = acessar(pessoa, "animais.gato");

Answer:

I finally managed to solve it!

var obj = {
    nome: "João",
    animais: {
        gato: "Foo",
        cachorro: "Bar"
    }
};

function acessar(obj, prop){
    var tmp = obj;
    var campos = prop.split(".");

    for(var i in campos){
        if(tmp.hasOwnProperty(campos[i])){
            tmp = tmp[campos[i]];
        }else{
            return false;
        }
    }

    return tmp;
}

var nomeDoGato = acessar(obj, "animais.gato");
console.log(nomeDoGato);
Scroll to Top