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