Benötigen Sie eine rekursive Funktion in Javascript/Jquery für unter JSON-Objekt.Rekursive Funktion In JavaScript für Array von Objekten mit unterschiedlichen Schlüsseln
Der Schlüssel "betroffen" ist der Blattknoten auf jeder Ebene.
Der Schlüssel "Kind" kann eine beliebige Anzahl von Ebenen haben, die Knoten in ihm "beeinflusst" haben können.
Ich möchte die Blattknoten ("impected") auf jeder Ebene mit dem untergeordneten ("Kind") Knoten auf derselben Ebene zusammenführen.
Es bedeutet Kindknoten auf jeder Ebene sollte Daten auch auf gleicher Ebene beeinflusst haben.
Eingang
{
"Data": [{
"id": 1745,
"name": "Top Parent",
"parentId": null,
"child": [{
"id": 1746,
"name": "Sub Parent- child to Top Parent",
"parentId": 1745,
"child": [{
"id": 1747,
"name": "child to Sub Parent--One ",
"parentId": 1746
},
{
"id": 1748,
"name": "child to Sub Parent--two",
"parentId": 1746,
"child": [{
"id": 1749,
"name": "Child to two",
"parentId": 1748
}],
"impacted": [{
"id": 2471,
"name": "Leaf of two ",
"network": true
}]
}
],
"impacted": [{
"id": 2470,
"name": "Leaf of Sub Parent-1 ",
"network": true
},
{
"id": 2469,
"name": "Leaf of Sub Parent-1",
"network": true
}
]
}],
"impacted": [{
"id": 2468,
"name": "Leaf Of Top Parent",
"network": true
}]
}]
}
Erwartete Ausgabe
{
"Data": [{
"id": 1745,
"name": "Top Parent",
"parentId": null,
"child": [{
"id": 1746,
"name": "Sub Parent- child to Top Parent",
"parentId": 1745,
"child": [{
"id": 1747,
"name": "child to Sub Parent--One ",
"parentId": 1746
},
{
"id": 1748,
"name": "child to Sub Parent--two",
"parentId": 1746,
"child": [{
"id": 1749,
"name": "Child to two",
"parentId": 1748
},
{
"id": 2471,
"name": "Leaf of two ",
"network": true
}
]
},
{
"id": 2470,
"name": "Leaf of Sub Parent-1 ",
"network": true
},
{
"id": 2469,
"name": "Leaf of Sub Parent-1",
"network": true
}
]
},
{
"id": 2468,
"name": "Leaf Of Top Parent",
"network": true
}
]
}]
}
Es ist OK, auch wenn wir "betroffen" Schlüssel aus dem Objekt nicht entfernen. Aber die Daten von "impacted" sollten mit "child" auf derselben Ebene zusammengeführt werden.
Ich habe versucht, mit folgenden function..but immer Duplikate auf jeder Ebene
repeatLoop(data){
if(data && data.length){
for(var i=0;i<data.length;i++){
if(data[i].child && data[i].child.length && data[i].impacted && data[i].impacted.length){
for(var k=0; k<data[i].impacted.length;k++){
data[i].child.push(data[i].impacted[k])
this.repeatLoop(data[i].child)
}
}
}
}
return data
}
Vielen Dank im Voraus
Könnten Sie jeder Codezeile setzen vier Räume vor und minify Ihre Beispieldaten? –