Javascript - 以变量作为连接字符串访问对象节点

时间:2014-05-04 14:09:11

标签: javascript string object

是否可以使用变量中的节点路径访问对象节点?

考虑这个对象:

var myObject = {
    settings: {
        some_key : 'some value'
        some_other_key : 'some value'
    }
};

我有这个字符串:

var model = 'settings.some_key';

有了这些数据,我想获得myObject.settings.some_key的价值。

如果它只是变量中的一个“节点”(例如settings,我可以使用myObject[model]访问它,但是当我需要进入多个级别时,我无法正常工作进入对象(首先settings然后some_key


编辑:我在最初的问题中不清楚。我真正想做的是到对象,而不是读取。我想将myObject.settings.some_key的值更改为某些内容,而不仅仅是访问它,如前所述。

1 个答案:

答案 0 :(得分:4)

您可以split基于model的{​​{1}}值,然后reduce分割数组,就像这样

.

要设置值,您可以执行以下操作

console.log('settings.some_key'.split(".").reduce(function(result, currentKey) {
    return result[currentKey];
}, myObject));
# some value