Как передать значения от потомков к родителю?

есть древовидный объект, с множетсвом вложенностей, мне необходимо передать значения от нижних потомков к родителю, как это можно сделать? пример объекта:

[
  {
    "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;
	}
}

→ Ссылка