Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2020, 14:40   #1
Алексей87К
Новичок
Джуниор
 
Регистрация: 26.02.2020
Сообщений: 1
По умолчанию Разбор работы reduce

Добрый день, уважаемые форумчане! Прохожу reduce. Возникли некоторые вопросы по теории, прошу вас о помощи! Имеется задача. Насколько я понял, она считает количество детей в дереве:

Код:
const reduce = (f, tree, acc) => {
  const [, children] = tree;
  const newAcc = f(acc);

  if (!children) {
    return newAcc;
  }
  return children.reduce((iAcc, n) => reduce(f, n, iAcc), newAcc);
};

const tree = ['A', [
  ['B', [['E'], ['F']]],
  ['C'],
  ['D', [['G'], ['J']]],
]];

reduce((acc) => acc + 1, tree, 0); // 8
Вопрос у меня к самому подсчёту, а именно к этой строчке: -> const newAcc = f(acc);
Мне не совсем понятно, как в переменную newAcc попадает число после работы этой функции: (acc) => acc + 1, tree, 0
Что именно меня смущает?
мне была бы понятно такая функция: (acc) => acc += 1; Но зачем здесь дополнительные параметры tree и 0? Какую роль они играют? … И как сюда: const reduce = (f, tree, acc) => { в acc, попадает с каждым вызовом новое число? Объясните пожалуйста. Правда, очень хочется разобраться!

РЕШЕНИЕ НАЙДЕНО!!!!!!!!!!!!!!

Из теории: Если при вызове reduce() передан аргумент initialValue, то значение accumulator будет равным значению initialValue

В моём случае:
- initialValue это newAcc
- accumulator это параметр встроенного метода reduce, iAcc -> reduce((iAcc, n)

Последний раз редактировалось Алексей87К; 26.02.2020 в 20:06. Причина: Ответ найден.
Алексей87К вне форума Ответить с цитированием
Старый 27.02.2020, 06:02   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Странная у Вас свёртка, она никак не учитывает значение в вершине.
Понятно, для подсчёта это не нужно, но всё же..

Я так и не понял, остались ли вопросы
Black Fregat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбор PDF WorldMaster C# (си шарп) 17 17.04.2018 16:53
Разбор XML Alexxx7 Visual C++ 8 01.12.2013 23:55
Разбор XML tae1980 Microsoft Office Excel 20 17.11.2011 17:00
Разбор строк в *.txt maxefficiently Помощь студентам 4 12.02.2011 20:52
Разбор dll PanGolin Фриланс 13 26.05.2008 01:56