如何使用从另一个对象生成的动态密钥替换多维javascript对象中的值

时间:2012-09-28 11:18:26

标签: javascript object

我有2个javascript对象,其中一个包含当前值,另一个包含需要替换的值的键。

var values = {'instance': {'body' : {'background': '000000'}}};

var replace = {'scope':'instance', 'item':'body', 'property': 'background'};

var newValue = 'FFFFFF';

Values[replace.scope][replace.item][replace.property] = newValue;

如上所示,我可以'硬编码'替换,但有没有办法使用'replace'对象的map / loop动态创建替换,因为多维对象的深度可能不同?

1 个答案:

答案 0 :(得分:0)

假设关于修改样式的示例是一个示例(否则我建议您使用jQuery来修改样式):

你可以这样做:

values.instance.body.background = newValue;

因此,如果替换实例被定义为它并且它甚至可以更深入,那么在这种情况下,您可以执行以下操作:

 var path = "";
 for(i = 0; i < replace.length; i++) {
    path += "." + replace[i];
 }
 eval(path + " = " + "'" + newValue + "'"); 
 //resulting in "values.instance.body.background = newValue" being executed;

干杯!

相关问题