Мне нужно изменить структуру сложной json-подобной структуры, состоящей из объектов и массивов. Допустим, исходный объект имеет вид dataObj
const dataObj = {
name: "flare",
children: [
{
name: "analytics",
desc : "A",
children: [
{
name: "cluster",
desc : "AB",
children: [
{
name: "AgglomerativeCluster",
desc : "ABC",
value: 3938,
count:39
},
{
name: "CommunityStructure",
desc : "ABCD",
value: 3812,
count:38
},
]
},
{
name: "graph",
desc : "ABCDE",
children: [
{
name: "BetweennessCentrality",
desc : "AHF",
value: 3534,
count:39
},
{
name: "LinkDistance",
desc : "AmH",
value: 5731,
count:39
},
]
},
{
name: "optimization",
desc : "Ashg",
children: [
{
name: "AspectRatioBanker",
desc : "Avnvs",
value: 7074,
count:39
}
]
}
]
},
{
name: "animate",
desc : "Amvs",
children: [
{
name: "Easing",
desc : "Amnvs",
value: 17010,
count:39
},
{
name: "FunctionSequence",
desc : "Abnvs",
value: 5842 ,
count:39
},
]
},
]
};
Мне нужно получить последний дочерний узел, который состоит из ключей "value" и "count", например:
children: [
{
name: "AgglomerativeCluster",
desc : "ABC",
value: 3938,
count:39
},
{
name: "CommunityStructure",
desc : "ABCD",
value: 3812,
count:38
},
]
Это последний листовой узел с ключами "value" и "count", который мне нужно реструктурировать и сделать дочерним узлом в этом формате
children: [
{
name: "AgglomerativeCluster",
desc : "ABC",
children : [
{
name: "AgglomerativeCluster",
desc : "ABC",
value: 3938,
count:39
}
]
},
{
name: "CommunityStructure",
desc : "ABCD",
children : [
{
name: "CommunityStructure",
desc : "ABCD",
value: 3812,
count:38
}
]
},
]
Как вы видите, этот дочерний узел снова должену меня есть children ключ, внутри которого мне нужно передать значение и количество ключей с одинаковыми ключами "name" и "desc". Я не мог понять логику, это выглядит очень сложно, кто-нибудь может решить это?
Ожидаемый результат:
const result = {
name: "flare",
children: [
{
name: "analytics",
desc : "A",
children: [
{
name: "cluster",
desc : "AB",
children: [
{
name: "AgglomerativeCluster",
desc : "ABC",
children : [
{
name: "AgglomerativeCluster",
desc : "ABC",
value: 3938,
count:39
}
]
},
{
name: "CommunityStructure",
desc : "ABCD",
children : [
{
name: "CommunityStructure",
desc : "ABCD",
value: 3812,
count:38
}
]
},
]
},
{
name: "graph",
desc : "ABCDE",
children: [
{
name: "BetweennessCentrality",
desc : "AHF",
children : [
{
name: "BetweennessCentrality",
desc : "AHF",
value: 3534,
count:39
}
]
},
{
name: "LinkDistance",
desc : "AmH",
children : [
{
name: "LinkDistance",
desc : "AmH",
value: 5731,
count:39
}
]
},
]
},
{
name: "optimization",
desc : "Ashg",
children: [
{
name: "AspectRatioBanker",
desc : "Avnvs",
children : [
{
name: "AspectRatioBanker",
desc : "Avnvs",
value: 7074,
count:39
}
]
}
]
}
]
},
{
name: "animate",
desc : "Amvs",
children: [
{
name: "Easing",
desc : "Amnvs",
children : [
{
name: "Easing",
desc : "Amnvs",
value: 17010,
count:39
}
]
},
{
name: "FunctionSequence",
desc : "Abnvs",
children : [
{
name: "FunctionSequence",
desc : "Abnvs",
value: 5842 ,
count:39
}
]
},
]
},
]
};