2012-09-28 76 views
0

我有2個javascript對象,其中一個包含當前值,另一個包含需要替換的值的鍵值。如何使用從另一個對象生成的動態關鍵字替換多維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; 

我可以「硬編碼」替換如上所示,但沒有一種方法能動態地創建替換使用「取代」的對象作爲多維對象可以以深度而變化的圖/循環?

+0

在替換對象上執行循環的問題是對象和json對象不能保證像數組那樣按照特定的順序。因此,您無法可靠地迭代替換並確定值對象的映射結構。 – Geuis

回答

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; 

乾杯!

相關問題