2017-11-26 2 views
0

Ich habe ein Flat Array von Objekten, die Eltern- und Kind-Beziehungen hat, aber es ist nicht sehr geradlinig.Erstellen eines Tiefenebenenobjekts aus einem flachen Array in JavaScript

Jeder Eintrag eines Objekts hat FromEntityId (Parent) und ToEntityId (Kind) Zuerst habe ich Eltern oder alle Eltern finden müssen, die Gegenstand der FromEntityId sind, die nicht in irgendeiner der anderen Objekt des ToEntityId und die Kinder ist sein jenes FromEntityId Parent-Objekt zum ToEntityId

Hier unten ist die 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" 
    } 
] 

Hier unten ist die 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 
      } 
     ] 
     } 
    ]; 

Ich versuche zu reduzieren Methode eines Arrays in JavaScript, aber immer noch nicht in der Lage, die gewünschte Ausgabe zu erreichen.

Antwort

0

Sie haben eher ein logisches Problem, nehme ich an. Erstellen Sie ein Array mit einer übergeordneten Child-Beziehung. f.

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

Dann, wenn ein Objekt keinen Parrent hat, ist es ein 0-Tiefenobjekt. Listen Sie diese Objekte in einem neuen endgültigen Datenobjektarray auf. Alle untergeordneten Objekte der ersten Objekte werden als Cildren in das übergeordnete Objekt geschoben, was in einer zweiten Schleife über die gesamten Daten geschieht.

Sie erhalten die Adresse, wo die Kinder aus dem ersten Eltern Kinder-Array abgelegt werden.

Es tut mir leid, aber Sie müssen die Arbeit tun, um dies selbst zu tun.

Mit freundlichen Grüßen

Kilian

+0

Vielen Dank für Ihre Antwort, aber ich bin nicht wirklich überzeugt, über die gewünschten Lösungen, könnte es ein Jahr dauern, mich mit der Lösung sicher zu kommen, ... – bvmCoder

Verwandte Themen