2013-02-01 4 views
0

개체 목록을 만들려면 일부 데이터가 필요합니다. 상위 개체 내부에 일부 개체를 추가하고 싶습니다.개체 내부에 개체를 추가 할 수 없습니다.

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

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이를 보여줍니다 내부 객체의 속성이 전혀 생성되지 도착하지만

이 메신저가 시도 것입니다 ... 그것으로 만든 얻을

왜 자식 개체에 대한 데이터가 생성되지 않습니까?

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 루프를 사용할 때 사용해야한다. 그렇지 않으면 prototype 배열 메소드가 가능한 값 'i'으로 객체의 속성에 포함된다. – nbrooks

관련 문제