Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-访问对象节点,变量为串联字符串_Javascript_String_Object - Fatal编程技术网

Javascript-访问对象节点,变量为串联字符串

Javascript-访问对象节点,变量为串联字符串,javascript,string,object,Javascript,String,Object,是否可以使用变量中的节点路径访问对象节点 考虑这个对象: var myObject = { settings: { some_key : 'some value' some_other_key : 'some value' } }; 我有一根绳子: var model = 'settings.some_key'; 有了这些数据,我想得到myObject.settings.some\u key的值 如果它只是变量中的一个“节点”(例如settin

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

考虑这个对象:

var myObject = {
    settings: {
        some_key : 'some value'
        some_other_key : 'some value'
    }
};
我有一根绳子:

var model = 'settings.some_key';
有了这些数据,我想得到
myObject.settings.some\u key
的值

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


编辑:我在最初的问题中不太清楚。我实际上想做的是写入对象,而不是读取。我想更改
myObject.settings的值。一些键
指向某个对象,而不是像我前面所说的那样仅访问它。

你可以基于
和拆分数组l来设置
模型
值像这样

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

'settings.some_key'.split(".").reduce(function(result, currentKey, index, array) {
    if (index === array.length - 1) {
        result[currentKey] = dataToBeSet;
    }
    return result[currentKey];
}, myObject);

console.log(myObject);
要设置值,可以执行以下操作

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

'settings.some_key'.split(".").reduce(function(result, currentKey, index, array) {
    if (index === array.length - 1) {
        result[currentKey] = dataToBeSet;
    }
    return result[currentKey];
}, myObject);

console.log(myObject);
您可以基于
和拆分数组来设置
模型
值,如下所示

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

'settings.some_key'.split(".").reduce(function(result, currentKey, index, array) {
    if (index === array.length - 1) {
        result[currentKey] = dataToBeSet;
    }
    return result[currentKey];
}, myObject);

console.log(myObject);
要设置值,可以执行以下操作

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

'settings.some_key'.split(".").reduce(function(result, currentKey, index, array) {
    if (index === array.length - 1) {
        result[currentKey] = dataToBeSet;
    }
    return result[currentKey];
}, myObject);

console.log(myObject);

嗯,这用于获取值,但不用于设置值。
currentKey
为我提供节点的实际值,而不是键名,以及
result[currentKey]
未定义。我试图通过声明我想获取值来简化问题,但我实际需要做的是设置值。编辑:
结果对我来说总是与
myObject
相同。@qwerty但这是一个完全不同的问题:-)你说得对。有什么指针吗?我想做的是将一些来自localStorage的JSON数据放入实际对象中。@qwerty你能编辑你的问题来添加关于向对象中添加数据的信息吗?当然,请参见编辑。这其实是一样的,只是我在写而不是从对象中读取。嗯,这可以用来获取值,但不设置它。
currentKey
提供节点的实际值,而不是键名,以及
result[currentKey]
未定义。我试图通过声明我想获取值来简化问题,但我实际需要做的是设置值。编辑:
result
对我来说总是与
myObject
相同。@qwerty但这是一个完全不同的问题:-)你是对的。有什么建议吗?我想做的是将一些来自localStorage的JSON数据放入实际对象中。@qwerty您可以编辑您的问题以添加有关向对象添加数据的信息吗?当然,请参见编辑。其实是一样的,只是我在写,而不是从物体上读。