2013-02-01 89 views
0

我正在查看一些數據以創建對象列表,我想在父對象內添加一些對象。雖然內部對象被創建任何屬性的獲得與它創建...無法在對象內添加對象

這是我嘗試做的事:

for(var i in data){ 
    if(parseInt(data[i].prevr) == 0){ 
     nodes[data[i].id] = new Object(); 
     nodes[data[i].id].name = data[i].name; 
     nodes[data[i].id].child = new Object(); 
    }else if(parseInt(data[i].prevr) > 0){ 
     console.log('test'); 
     nodes[data[i].prevr].child[data[i].id] = new Object(); 
     nodes[data[i].prevr].child[data[i].id].name = data[i].name; 
    } 
} 
console.log(JSON.stringify(nodes[5])); 

結果表明這的console.log:

test 
{"name":"Test2","child":{}} 

爲什麼不創建子對象的數據?

我的變量data認爲:

[{"id":"3","name":"Test2","prevr":"0"} 
{"id":"4","name":"Test3","prevr":"3"}] 
+0

什麼是原來的'data'? –

+0

@ExplosionPills讓我編輯我的問題,我將它添加到:) – Sir

+0

你的代碼[正常工作](http://jsbin.com/ajejav/1/) –

回答

0
for(var i in data){ 
    if (!data.hasOwnProperty(i)) continue; 

    if (parseInt(data[i].prevr, 10) == 0) { 
     nodes[data[i].id] = { name: data[i].name, child : {} }; 
    } 
    else if (parseInt(data[i].prevr, 10) > 0) { 
     console.log('test'); 
     nodes[data[i].prevr].child[data[i].id] = { name: data[i].name }; 
    } 
} 
console.log(JSON.stringify(nodes[5])); 
+0

'if(!data.hasOwnProperty(i) )繼續;'爲了解決這個問題? – Sir

+0

這並不是所有我改變的...但是當你在數組中使用'for ... in'循環時應該使用它,否則原型數組方法被包含在對象的屬性中作爲可能的值'i' – nbrooks