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您可以编辑您的问题以添加有关向对象添加数据的信息吗?当然,请参见编辑。其实是一样的,只是我在写,而不是从物体上读。