Javascript - получить путь к свойству объекта

У меня есть следующий объект

var obj = {};
obj.foo = {};
obj.foo.bar = "I want this";

учитывая "путь" "foo.bar" как строка, как мне получить obj.foo.bar (или же obj[foo][bar])?

4 ответа

Решение

Вот способ:

function getKey(key, obj) {
  return key.split('.').reduce(function(a,b){
    return a && a[b];
  }, obj);
}

getKey('foo.bar', obj); //=> "I want this"

Если path = "foo.bar" тогда вы можете написать

var keys = path.split('.');
console.log(obj[keys[0]][keys[1]]);

По-другому:

function resolve(root, path){
    try {
        return (new Function(
            'root', 'return root.' + path + ';'
        ))(root);
    } catch (e) {}
}

resolve(obj, 'foo.bar'); // "I want this"

Подробнее об этом: /questions/3933002/kakovyi-nailuchshie-sposobyi-ssyilki-na-vetvi-drevovidnoj-strukturyi-json/3933007#3933007

Просто используйте obj.foo.bar.. это будет работать;

Другие вопросы по тегам