2017-11-26 2 views
0

부모 및 자식 관계가 있지만 매우 직설적이지 않은 객체의 플랫 배열이 있습니다. 객체의자바 스크립트의 플랫 어레이에서 깊이 수준 객체 빌드

모든 항목은 FromEntityId (부모)와 ToEntityId (아이) 먼저 내가 다른 Oject의 ToEntityId의에 존재하지 않는 객체의 FromEntityId과 어린이 것입니다 부모 또는 모든 부모를 찾을 필요가있다 여기에 아래의 ToEntityId

해당 부모 개체의 FromEntityId의 OriginalData

OriginalData = [ 
    { 
    "FromEntityId": 266, 
    "ToEntityId": 348, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 266, 
    "ToEntityId": 353, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 266, 
    "ToEntityId": 365, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 359, 
    "ToEntityId": 350, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 359, 
    "ToEntityId": 354, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 359, 
    "ToEntityId": 361, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 359, 
    "ToEntityId": 364, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 359, 
    "ToEntityId": 372, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 362, 
    "ToEntityId": 357, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 365, 
    "ToEntityId": 369, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 369, 
    "ToEntityId": 670, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 266, 
    "ToEntityId": 349, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 266, 
    "ToEntityId": 359, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 350, 
    "ToEntityId": 351, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 359, 
    "ToEntityId": 352, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 359, 
    "ToEntityId": 355, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 359, 
    "ToEntityId": 362, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 359, 
    "ToEntityId": 365, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 361, 
    "ToEntityId": 358, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 273, 
    "ToEntityId": 356, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 266, 
    "ToEntityId": 385, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 266, 
    "ToEntityId": 389, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 266, 
    "ToEntityId": 388, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 266, 
    "ToEntityId": 382, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 369, 
    "ToEntityId": 380, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 273, 
    "ToEntityId": 381, 
    "Status": "NULL" 
    }, 
    { 
    "FromEntityId": 273, 
    "ToEntityId": 672, 
    "Status": "NULL" 
    } 
] 

여기에 아래의 FinalData를

finalData = [ 
     { 
     "FromEntityId": 266, 
     "Status": "NULL", 
     "depthLevel": 0, 
     "children": [ 
      { 
      "FromEntityId": 266, 
      "ToEntityId": 348, 
      "Status": "NULL", 
      "depthLevel": 1 
      }, 
      { 
      "FromEntityId": 266, 
      "ToEntityId": 353, 
      "Status": "NULL", 
      "depthLevel": 1 
      }, 
      { 
      "FromEntityId": 266, 
      "ToEntityId": 365, 
      "Status": "NULL", 
      "depthLevel": 1, 
      "children": [ 
       { 
       "FromEntityId": 365, 
       "ToEntityId": 369, 
       "Status": "NULL", 
       "depthLevel": 2, 
       "children": [ 
        { 
        "FromEntityId": 369, 
        "ToEntityId": 670, 
        "Status": "NULL", 
        "depthLevel": 3 
        }, 
        { 
        "FromEntityId": 369, 
        "ToEntityId": 380, 
        "Status": "NULL", 
        "depthLevel": 3 
        } 
       ] 
       } 
      ] 
      }, 
      { 
      "FromEntityId": 266, 
      "ToEntityId": 385, 
      "Status": "NULL", 
      "depthLevel": 1 
      }, 
      { 
      "FromEntityId": 266, 
      "ToEntityId": 389, 
      "Status": "NULL", 
      "depthLevel": 1 
      }, 
      { 
      "FromEntityId": 266, 
      "ToEntityId": 388, 
      "Status": "NULL", 
      "depthLevel": 1 
      }, 
      { 
      "FromEntityId": 266, 
      "ToEntityId": 382, 
      "Status": "NULL", 
      "depthLevel": 1 
      }, 
      { 
      "FromEntityId": 266, 
      "ToEntityId": 349, 
      "Status": "NULL", 
      "depthLevel": 1 
      }, 
      { 
      "FromEntityId": 266, 
      "ToEntityId": 359, 
      "Status": "NULL", 
      "depthLevel": 1, 
      "children": [ 
       { 
       "FromEntityId": 359, 
       "ToEntityId": 354, 
       "Status": "NULL", 
       "depthLevel": 2 
       }, 
       { 
       "FromEntityId": 359, 
       "ToEntityId": 361, 
       "Status": "NULL", 
       "depthLevel": 2, 
       "children": [ 
        { 
        "FromEntityId": 361, 
        "ToEntityId": 358, 
        "Status": "NULL", 
        "depthLevel": 3 
        } 
       ] 
       }, 
       { 
       "FromEntityId": 359, 
       "ToEntityId": 364, 
       "Status": "NULL", 
       "depthLevel": 2 
       }, 
       { 
       "FromEntityId": 359, 
       "ToEntityId": 372, 
       "Status": "NULL", 
       "depthLevel": 2 
       }, 
       { 
       "FromEntityId": 359, 
       "ToEntityId": 352, 
       "Status": "NULL", 
       "depthLevel": 2 
       }, 
       { 
       "FromEntityId": 359, 
       "ToEntityId": 355, 
       "Status": "NULL", 
       "depthLevel": 2 
       }, 
       { 
       "FromEntityId": 359, 
       "ToEntityId": 362, 
       "Status": "NULL", 
       "depthLevel": 2, 
       "children": [ 
        { 
        "FromEntityId": 362, 
        "ToEntityId": 357, 
        "Status": "NULL", 
        "depthLevel": 3 
        } 
       ] 
       }, 
       { 
       "FromEntityId": 359, 
       "ToEntityId": 365, 
       "Status": "NULL", 
       "depthLevel": 2 
       }, 
       { 
       "FromEntityId": 359, 
       "ToEntityId": 350, 
       "Status": "NULL", 
       "depthLevel": 2, 
       "children": [ 
        { 
        "FromEntityId": 350, 
        "ToEntityId": 351, 
        "Status": "NULL", 
        "depthLevel": 3 
        } 
       ] 
       } 
      ] 
      } 
     ] 
     }, 
     { 
     "FromEntityId": 273, 
     "Status": "NULL", 
     "depthLevel": 0, 
     "children": [ 
      { 
      "FromEntityId": 273, 
      "ToEntityId": 356, 
      "Status": "NULL", 
      "depthLevel": 1 
      }, 
      { 
      "FromEntityId": 273, 
      "ToEntityId": 381, 
      "Status": "NULL", 
      "depthLevel": 1 
      }, 
      { 
      "FromEntityId": 273, 
      "ToEntityId": 672, 
      "Status": "NULL", 
      "depthLevel": 1 
      } 
     ] 
     } 
    ]; 
입니다 수

JavaScript에서 Array의 reduce 메서드를 사용하려고하지만 여전히 Desirable 출력을 얻을 수 없습니다.

답변

0

내가 가진 논리적 인 문제가 더 많습니다. 자식 부모 관계가있는 배열을 만듭니다. f.e.

var cparr = []; 
cparr[ichild] = iparent; 

그런 다음 객체에 parrent가없는 경우 0 깊이 객체입니다. 이 오브젝트들을 새로운 최종 데이터 오브젝트 배열에 나열하십시오. 첫 번째 오브젝트의 모든 하위 항목은 부모 오브젝트에 cildren으로 푸시되며 전체 오브젝트에 대해 두 번째 루프에서 수행합니다.

첫 번째 상위 하위 배열에서 하위 항목을 가져올 위치를 얻을 수 있습니다.

죄송하지만 직접해야합니다.

친절 감사

킬리안 답변에 대한

+0

감사하지만 나는 확실히 해결책을 마련하기 위해 올해 나 걸릴 수 있습니다 원하는 솔루션에 대한 정말 확신하지 않다, ... – bvmCoder

관련 문제