我想以编程方式将 'hello' 更改为 'hey',该解决方案应该适用于任意数量的嵌套元素(我只使用 2 个级别来保持简单)。
var data = {level1: {level2 : 'hello' }};
我可以访问“数据”变量、路径(“级别 1/级别 2”)和新值(“嘿”)。
我试着做:
var parents = 'level1/level2'.split('/');
var target = data;
for(var i=0; i<parents.length; i++){
target = data[parents[i]];
}
target = 'hey';
这个想法是旅行到根
target = data
然后1级深
target = data['level1']
...继续前进
target = data['level1']['level2'] //data['level1'] === target
并修改内容
target = 'hey'
但是当我这样做时(target = target ['level2']),它看起来像丢失了对原始对象(数据)的引用。
我想我可以用路径构建一个字符串,然后对其进行评估:
eval("data['level1']['level2']='hey');
有没有更好的不涉及 eval() 的解决方案?