@alex999921

Возможно рекурсию совместить с чистыми функциями?

Нужно найти среднее значение полей value, использовать чистые функции.
Перечитал много материала и не пойму как тут можно это сделать с рекурсией.
Я наверное неправильно делаю обход по объекту рекурсией, но как по-другому сделать, чтобы req(obj) возвращала поле value каждой ветки.

var obj={value:14,children:[{value:33,children:[{value:9,children:[{value:35},{value:69},{value:6}]},{value:47,children:[{value:4}]},{value:52,children:[{value:74},{value:55}]}]},{value:88,children:[{value:71,children:[{value:35}]},{value:6,children:[{value:74}]},{value:26,children:[{value:80},{value:42}]}]}]};

const fnCounter = start => {
  let counter = start;
  return () => counter++;
};

const avarageQuantity = fnCounter(0);

let sum = 0;

const req = objItem => {
  (objItem.children || []).map(req);
  sum = sum + obj.value;
  avarageQuantity();
};

req(obj);
console.log(sum / avarageQuantity());
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const count = obj =>
  (obj.children || []).reduce((acc, n) => {
    const c = count(n);
    acc.num += c.num;
    acc.sum += c.sum;
    return acc;
  }, { num: 1, sum: obj.value });


const c = count(obj);
const average = c.sum / c.num;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы