2011-03-09 71 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

相关问题