Вопрос пользователя Шухрат Каримов в уроке «Агрегация (reduce)», курс «JS: Функции»

Шухрат Каримов

Здравствуйте! Не очень понял как reduce использовать с объектам в упражнении, если надо складывать числа, понятно, таких примеров много

а тут ведь в accumulator мы не можем хранить определенные объекты, они по идеи при переборе должны быть там все, я очень долго пытался задействовать accumulator , но не смог, всегда пишет что он пустой или другая ошибка возникает

Если через консоль смотреть то accumulator это первый объект, а currentValue все остальные объекты, как этот метод тут нам поможет? Видел ниже что надо деструктуризацию использовать, но к accumulator её не применить, а если к currentValue то не разобрался что нам это даст https://ru.hexlet.io/code_reviews/325033

10 0

Александр Кремнёв

Приветствую! Вспоминаем тему spread, смотрим как происходит деструктуризация объектов. В аккумуляторе это и следует использовать, т.к. объект вполне себе итерируем. Надо понять как будет формироваться аккумулятор с учетом spread оператора, что пойдет туда ключом, а что - значением, вспоминаем как работает метод reduce. После этого все должно получиться. Удачи!

0

Шухрат Каримов

если accumulator-у деструктуризацию сделать, то на первом же переборе в reduce ошибка Cannot destructure property name of 'undefined' or 'null'.

если currentValue, то также не очень понятно зачем это нужно, ведь нужный ключ есть в параметре функции, по нему можно просто обратиться чтобы создать ключ в новом объекте, а в значение загружать массив с нужными данными, но у меня пока получилось в массив загрузить один объект

если делать spread accumulator с currentValue, то он заменит по одинаковым ключам, т.е по mark, и так у нас пропадут нужные нам данные

я просто не очень понимаю как будет себя accumulator в этом случае, он ведь собирает данные, а нам надо данные не только собирались но и раскидывались объекты по нужным ключам

0

Александр Кремнёв

Шухрат, чтобы лучше понять процесс, предлагаю по шагам посмотреть что происходит при вызове кода в консоле > chrome или > firefox, пошаговая визуализация хорошо помогает понять происходящий процесс, тыц. Сейчас метод > reduce реализован неправильно, он меняет созданный внешний объект > obj, а должен накапливать значение аккумулятора при прохождении. Предлагаю еще раз внимательно ознакомиться с методом > reduce, изучить приведенные примеры. Советую почитать эту статью, она должна натолкнуть на правильные мысли.

0

Шухрат Каримов

Все оказалось проще https://ru.hexlet.io/code_reviews/325033, но отличается от решения учителя не понял последнюю строку у него, можете пояснить что она делает? кроме concat

0

Александр Кремнёв

В этой строчке как раз и формируется наш результат, накапливаемый в аккумуляторе. Следует обратить внимание как используется аккумулятор, что является ключом, а что значением, рекомендую поэксперементировать с кодом в репле

0

Сергей Мелодин

Шухрат Каримов, приветствую.

Вам удалось разобраться? Если вопрос решён и вам помог ответ участника сообщества, нажмите "Отметить как решение" в его комментарии. Это хороший способ выразить благодарность и поможет другим ученикам в поисках ответов на похожие вопросы.

0

Шухрат Каримов

Сергей Мелодин, нашел пояснения в обсуждениях следующего упражнения, спасибо

0

Сергей Мелодин

Шухрат Каримов, вы можете написать здесь какой именно информации не хватило, мы тогда улучшим теорию или практику.

0

Шухрат Каримов

Сергей Мелодин, мне, иногда, не хватает комментариев в коде у решения учителя, в процессе обучения думаю они бы были полезны

0

Сергей Мелодин

Шухрат Каримов, добавлю комментарии тут к решению учителя.

1

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг».

Похожие вопросы

Павел Хлесткин 06 ноября 2020 →

Здравствуйте, что-то совсем не соображу как решить только через reduce. Решил для начала сделать с использо...

Nadia Bogacheva 26 октября 2020 →

Скажите, пожалуйста, где в теории до этого было про object1.concat(object2)?

Денис Семес 26 октября 2020 →

Поправьте меня, если я не прав, но использовать оператор spread в reduce у коллег не приветствуется. Я выпо...

Герман Фоменко 18 октября 2020 →

Задачу я решил. Но я всё равно так и не понял reduce.

Елизавета Коновалова 12 октября 2020 →

Привет! Подскажите, почему не срабатывает с обращением через точку (закоменчено) https://ru.hexlet.io/code_...