2011-03-09 101 views
-1

我想用主對象中的其他對象替換子對象。是否有可能用主對象中的其他對象替換子對象?

例如:

var mianobj = {"a":{"aa":{"aaa":"0000","bbb":"1111"}},"b":"222","c":"333"} 
var newsubobj = {"n":"8888","g":"9999"} 

console.log(mainobj.a.aa) 
// this gives the sub object --> {"aaa":"0000","bbb":"1111"} 

我想newsubobj替換此對象。

我需要的結果作爲::提前

console.log(mainobj); 
// {"a":{"aa":{"n":"8888","g":"9999"}},"b":"222","c":"333"} 

感謝。

+0

不'mainobj.a.aa = newsubobj;'工作? – 2011-03-09 13:31:46

+0

你嘗試過'mainobj.a.aa = newsubobj'嗎? – jswolf19 2011-03-09 13:32:13

+2

也,你的第一個'mainobj'有一個錯字... – jswolf19 2011-03-09 13:32:43

回答

4

爲什麼你不這樣做: mainobj.a.aa = newsubobj

+0

@ jswolf19它在控制檯中工作正常。不是動態的。其實我的mainobj是全局對象,我得到像subobjpath = a.aa的子obj路徑,如果我分配mainobj.subobjpath = newsubobj //在這種情況下newsubobj創建與parllel to mainobj – Nagendra 2011-03-09 13:54:58

+0

張貼更多的代碼,我嘗試來幫你。 – 2011-03-09 14:04:52

0
var mainobj = {"a":{"aa":{"aaa":"0000","bbb":"1111"}},"b":"222","c":"333"}; 

var newsubobj = {"n":"8888","g":"9999"}; 

mainobj.a.aa = newsubobj; 

console.log(mainobj); 
+0

嘿非常感謝。它的工作... – Nagendra 2011-03-09 13:39:36

+0

它只在控制檯工作。但在動態。 – Nagendra 2011-03-09 13:47:44

+0

其實我的mainobj是全局對象,我得到像subobjpath = a.aa的子obj路徑,如果我分配mainobj.subobjpath = newsubobj //在這種情況下,newsubobj是使用parllel創建到mainobj。 – Nagendra 2011-03-09 13:53:22

1

啊,現在我們正在某個地方。要更新您的問題,您有:

var mainobj = {"a":{"aa":{"aaa":"0000","bbb":"1111"}},"b":"222","c":"333"} 
var subobjpath = "a.aa"; // this needs to be a string 
var newsubobj = {"n":"8888","g":"9999"} 

,並要使用subobjpathnewsubobj取代的mainobj的一部分。

你可以這樣做,使用這樣的代碼:

var path = subobjpath.split('.'); 
var obj = mainobj; 
for(var idx=0; idx < path.length-1;idx++) obj = mainobj[path[idx]]; 
obj[path[path.length-1]] = newsubobj; 
+0

嘿非常感謝...它工作.... – Nagendra 2011-03-10 10:05:08

+0

@Nagendra,只要你有奇怪的命名成員,包括'。字符^ _^ – jswolf19 2011-03-10 11:07:50

+0

@Nagendra:如果它的工作正常..你爲什麼不能接受這個答案? – 2013-03-15 05:02:58

相關問題