我不确定是否可以通过 JavaScript 实现这样的事情,所以我在这里寻求帮助。
我有一个字符串:
var value = 'level1.level2.level3';
Run Code Online (Sandbox Code Playgroud)
我有一个对象:
var object = {
level1 : {
level2 : {
level3 : 0
},
},
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用字符串值来获取对该对象的引用,而不仅仅是特定对象键的值。使用遍历函数和参考,以便可以使用它进行操作。
我已经检查过,我确信这不是重复的问题,因为在重复版本中,解析函数的结果将是对象键值,而不是对象键本身。
一班轮:
[ob].concat(value.split('.')).reduce(function(a, b) { return a[b] })
Run Code Online (Sandbox Code Playgroud)
样本:
[ob].concat(value.split('.')).reduce(function(a, b) { return a[b] })
Run Code Online (Sandbox Code Playgroud)
您不能以这种方式更改 的值,0因为它不是对象引用
如果您想影响原始对象,您需要获取level1.level2对象并更改其字段level3
ob.getValue('level1.level2').level3 = 25;
Run Code Online (Sandbox Code Playgroud)
- 这就是 JavaScript 的工作原理
但是,可以编写一个方法来设置其值
Object.prototype.getValue = function(path) {
return [this].concat(path.split('.')).reduce(function(a, b) { return a[b] });
}
// usage:
alert((
{
level1 : {
level2 : {
level3 : 0
},
},
}).getValue('level1.level2.level3'));Run Code Online (Sandbox Code Playgroud)