Как передать значения от потомков к родителю?
есть древовидный объект, с множетсвом вложенностей, мне необходимо передать значения от нижних потомков к родителю, как это можно сделать? пример объекта:
[
{
"id": 1,
"parentid": null,
"count": "0",
"children": [
{
"id": 2,
"parentid": 1,
"count": "89",
"children": [
{
"id": 3,
"parentid": 2,
"count": "19",
"children": [
{
"id": 5,
"parentid": 3,
"count": "205"
},
{
"id": 4,
"parentid": 3,
"count": "8"
}
]
}
]
}
]
}
]
результат выполнения, каждый родитель получает сумму своих потомков:

Ответы (1 шт):
Автор решения: br3t
→ Ссылка
Дополнил ваш пример для наглядности.
Рекурсивно проходим по потомкам, если есть дети - запускаем функцию для них, иначе - пробрасываем count.
var o = [
{
"id": 1,
"parentid": null,
"count": "0",
"children": [
{
"id": 2,
"parentid": 1,
"count": "89",
"children": [
{
"id": 3,
"parentid": 2,
"count": "19",
"children": [
{
"id": 5,
"parentid": 3,
"count": "205"
},
{
"id": 4,
"parentid": 3,
"count": "8"
}
]
},
{
"id": 6,
"parentid": 2,
"count": "20"
},
]
}
]
}
];
calcCount(o);
console.log(o);
function calcCount(ob) {
if(ob.length) {
var sum = 0;
ob.forEach(function(a) {
if(a.children) {
a.count = calcCount(a.children);
}
sum += +a.count;
});
return sum;
}
}