복붙노트

[JQUERY] 재귀 적 객체 (트리)를 통해 루핑

JQUERY

재귀 적 객체 (트리)를 통해 루핑

해결법


  1. 1.당신이 찾고있는 용 루프 :

    당신이 찾고있는 용 루프 :

    for (var key in foo)
    {
        if (key == "child")
            // do something...
    } 
    

    에 대한 ... 루프에서 객체의 프로토 타입에 추가 된 것을 포함하여 모든 열거 속성을 반복된다는 점에 유의해야합니다. 이러한 속성에 작용하지 않도록하려면 속성이 해당 객체에 속하는지 확인하기 위해 hasOwnProperty 방법을 사용할 수 있습니다 :

    for (var key in foo)
    {
        if (!foo.hasOwnProperty(key))
            continue;       // skip this property
        if (key == "child")
            // do something...
    }
    

    루프가 반복적으로 재귀 함수를 작성 단순하게 수행 될 수있다 :

    // This function handles arrays and objects
    function eachRecursive(obj)
    {
        for (var k in obj)
        {
            if (typeof obj[k] == "object" && obj[k] !== null)
                eachRecursive(obj[k]);
            else
                // do something... 
        }
    }
    

  2. 2.당신은 당신이 반복적으로 Object.keys를 사용할 수있는 관계의 트리를 돌아 가야합니다.

    당신은 당신이 반복적으로 Object.keys를 사용할 수있는 관계의 트리를 돌아 가야합니다.

    함수 경로 (항목) { 함수 ITER (R, P) { VAR 키 = Object.keys (R); 경우 (keys.length) { 창 keys.forEach (X => ITER (R [X] p.concat (X))); } result.push ([P]) } VAR 결과 = []; ITER (항목, []); 결과를 반환; } VAR 데이터 = { foo는 { 바 : '', 아이: { 그랜드 : { greatgrand : {} } } } } CONSOLE.LOG (경로 (데이터));


  3. 3.당신은 그 안에 내장 된 구문 분석 기능이있는 재귀 함수를 가질 수 있습니다.

    당신은 그 안에 내장 된 구문 분석 기능이있는 재귀 함수를 가질 수 있습니다.

    function parseObjectProperties (obj, parse) {
      for (var k in obj) {
        if (typeof obj[k] === 'object' && obj[k] !== null) {
          parseObjectProperties(obj[k], parse)
        } else if (obj.hasOwnProperty(k)) {
          parse(obj[k])
        }
      }
    }
    

    나는 그것이 작동하는 방법은 다음과 같습니다, 영업 이익의 푸 개체를 사용

    var에 푸 = { 바 : 'A', 아이:{ B : 'B', 멋진:{ greatgrand : { C : 'C' } } } } // 구문 분석 funciton으로이 재귀 함수를 사용 함수 parseObjectProperties (OBJ, 파스) { (OBJ에서의 VAR K)에 대한 { 경우 (대해서 typeof OBJ [K] === '물체'&& OBJ [K]! == NULL) { parseObjectProperties (OBJ [K], 파스) } 다른 경우 (obj.hasOwnProperty (K)) { 파스 (OBJ [K]) } } } // *** // 다음이 경우 단지 콘솔의 속성에 원하는 작업을 적용 parseObjectProperties (foo는, 기능 (소품) { CONSOLE.LOG (소품) })

  4. from https://stackoverflow.com/questions/2549320/looping-through-an-object-tree-recursively by cc-by-sa and MIT license