Javascript - 检索对象属性路径

时间:2013-09-19 10:13:23

标签: javascript

我有以下对象

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

如果将“路径”"foo.bar"作为字符串,我该如何检索obj.foo.bar(或obj[foo][bar])?

4 个答案:

答案 0 :(得分:8)

这是一种方式:

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

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

答案 1 :(得分:1)

如果path = "foo.bar"那么你可以写

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

答案 2 :(得分:-1)

另一种方式:

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

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

更多相关信息:https://stackoverflow.com/a/18381564/1636522

答案 3 :(得分:-3)

只需使用obj.foo.bar ..即可使用;