2016-05-27 80 views
3

我有一個javascript對象;使用數組更新javascript對象以供參考

xml 
-nutrition 
--daily values 
--food 
---0 
----fat=20g 
----sodium= 
---1 
----fat=20g 
----sodium=5mg 
---2 
----fat=20g 
----sodium=5mg 
-stores 
--0 
--1 

我也有一個動態生成的javscript陣列

["xml", "nutrition", "food", 0] 

如何更新基於此陣列上的JavaScript對象?無需手動輸入

myobj[array[0]][array[1]][array[2]][array[3]].fat = '30g'; 

回答

4

您可以使用Array#reduce()

它遍歷所有給定的鍵並返回最後一個引用以供進一步使用。

["xml", "nutrition", "food", 0].reduce(function (r, k) { 
    return r[k]; 
}, myobj).fat = '30g'; 

或ES6

["xml", "nutrition", "food", 0].reduce((r, k) => r[k], myobj).fat = '30g';