2012-11-06 7 views
3

내가이 나무 throught를 걸어와 내게통과하는 자바 스크립트의 나무

var config = { 
"tree": { 
    "element": { 
     "name": "pd", 
     "children": { 
      "element": { 
       "name": "pd2", 
       "children": {} 
      }, 
      "element": { 
       "name": "pd3", 
       "children": { 
        "element": { 
         "name": "pd6", 
         "children": {} 
        }, 
        "element": { 
         "name": "pd5", 
         "children": { 
          "element": { 
           "name": "pd7", 
           "children": { 
            "element": { 
             "name": "pd8", 
             "children": {} 
            } 
           } 
          } 
         } 
        } 
       } 
      }, 
      "element": { 
       "name": "pd4", 
       "children": {} 
      } 
     } 
    } 
} 

}

작동하지 모든 "요소"객체 만 인쇄하려고하지만 그것은 단지 두 개의 객체의 복수를 인쇄 개체 시간
여기 내 코드

function parseConfig(configs){ 
    for(var element in configs){ 
     if (typeof(configs[element])=="object") { 
      console.log(configs[element]); 
      parseConfig(configs[element]); 
     } 
     } 
    } 

이며, 여기 jsfiddle

,174의 코드는
+0

하지만 '요소'는 여러 번 중복되었습니다 ... – elclanrs

+0

네,하지만 다른 하위 요소와 이름 및 다른 속성을 가지고 있습니다. '요소'개체를 모두 살펴보고 싶습니다. –

답변

3

그래서 당신의 jsfiddle 페이지에서 JSLint를 실행 내가 몇 가지를 발견

  1. 객체는 키와 값을 가지고 있습니다,하지만 그들은 동일한 키가 있다면 서로 다른 값 사이에 어떻게 차별화 것? 즉, 같은 이름의 키를 여러 개 가질 수 없으므로 여러 "요소"키가있는 중첩 된 객체가 유효하지 않습니다.
  2. 나는 당신이 루프의 내부 요소를 선언 할 시간을 미리 그것을 선언하려고 할 수 있다고 생각하지 않습니다 :

    VAR 요소; for (config in element) {

  3. 실제로이 코드가이 jsfiddle에서 어떤 작업을 수행하기를 원한다면 onLoad 함수에 넣어야합니다. jsfiddle을 사용하여 코드를 보여 주었다면, 실제로 코드를 사용하고 있다면 어디에서나 호출 할 수 있기를 바랍니다.

1 키를 계산하고 # 2 here으로 고정했습니다. 아니면 여기 아래를 참조하십시오

var config = { 
    "tree": { 
     "element": { 
      "name": "pd", 
      "children": { 
       "element1": { 
        "name": "pd2", 
        "children": {} 
       }, 
       "element2": { 
        "name": "pd3", 
        "children": { 
         "element1": { 
          "name": "pd6", 
          "children": {} 
         }, 
         "element2": { 
          "name": "pd5", 
          "children": { 
           "element": { 
            "name": "pd7", 
            "children": { 
             "element": { 
              "name": "pd8", 
              "children": {} 
             } 
            } 
           } 
          } 
         } 
        } 
       }, 
       "element3": { 
        "name": "pd4", 
        "children": {} 
       } 
      }, 
      "element": { 
       "name": "pd4", 
       "children": {} 
      } 
     } 
    } 
}; 

function parseConfig(configs) { 
    var element; 
    for (element in configs) { 
     if (typeof(configs[element]) == "object") { 
      console.log(configs[element]); 
      parseConfig(configs[element]); 
     } 
    } 
} 
parseConfig(config);​ 

여러 "요소"키를 가진하는 또 다른 방법은, 요소의 목록을 포함하는 '요소'배열을하는 것입니다.

+0

감사합니다. 문제는 내 JSON 개체와 관련이 있습니다. 권리 ? –