2010-07-20 2 views
0

자바 스크립트에서 단 하나의 개체가 주어진 문자열에서 전체 조상 계층을 얻으려면 어떻게해야합니까? 지금 당장은 질문하는 법을 생각조차 할 수 없다. 그래서 나는 심지어 그것을 할 수 없다.자바 스크립트 : 문자열로 전체 개체 계층 구조를 얻으십시오.

"lvl1.lvl2.lvl3" 

수 : 내가보고 싶어

var lvl1 = { one: "one", two: "two" }; 
lvl1.lvl2 = {flip:"flip", flam:"flam"}; 
lvl1.lvl2.lvl3 = {who:"who", what:"what"}; 

test(o) { 
    alert(hierarchyToString(o)); 
} 

var tmp = lvl1.lvl2.lvl3; 
test(tmp); 

예를 들면 다음과 같습니다입니까? 최종 잎 문자열을 전달하면 어떻게됩니까?

test(lvl1.lvl2.lvl3.what); 

가능합니까? 잘하면 그 코드는 의미가 있습니다 ... 내 머리 꼭대기에서 ...

고마워요!

답변

2

parent 참조가 없으므로 일반 자바 스크립트 개체를 사용할 수 없습니다. 자세한 내용은 question을 참조하십시오.

불행히도 문자열 표현에서 객체로 이동하는 것이 쉽지만 그 반대는 아닙니다. 각 객체에서 부모 참조를 명시 적으로 코딩해야하고 각 리프 노드는 위쪽으로 이동할 수 있어야합니다.

+1

감사합니다. Anurag ... 오늘은 분명히 뇌사 상태입니다. (몇 군데 잤지는 않았습니다 ...) 물론 많은 다른 물체가 물체를 참조 할 수 있습니다. 따라서 하나의 물체를 가질 수는 없습니다. 부모, 내 질문을 바보 렌더링 :) –

0

당신은 이런 일을 할 수 있지만,이 ..

var lvl1 = { one: "one", two: "two" }; 
lvl1.lvl2 = {flip:"flip", flam:"flam"}; 
lvl1.lvl2.lvl3 = {who:"who", what:"what"}; 

function test(o) { 
    for (var item in o) 
    { 
     if (typeof(o[item]) === 'object') 
     { 
      var next = test(o[item]); 
      if (next != '') 
       return item + '.' + next 
      else 
       return item ; 
     } 
    } 
    return ''; 
} 
alert(test(lvl1)); 

를 루트 요소의 이름을 식별 할 수없는 그리고 그것은 단지 arround를하지 다른 방법 outer->inner을 갈 수 있습니다 ..

확인하려면 첫 번째 요소는, 당신은 ...

var root={}; 
root.lvl1 = { one: "one", two: "two" }; 
root.lvl1.lvl2 = {flip:"flip", flam:"flam"}; 
root.lvl1.lvl2.lvl3 = {who:"who", what:"what"}; 

을 빈 부모 노드를 사용하고 alert(test(root));

로 부를 수
관련 문제