Проблемы с reduce? Переходим от циклов на reduce за 20 минут в JavaScript

Поделиться
HTML-код
  • Опубликовано: 6 сен 2024

Комментарии • 41

  • @oscarreuenthal4963
    @oscarreuenthal4963 11 месяцев назад +7

    Продалжай в том же духе мне очень нравится как ты все обясняешь!

  • @ladikrivne1621
    @ladikrivne1621 11 месяцев назад +5

    Давай про this такой-же видос) лайк)

  • @Lobov_EM
    @Lobov_EM 10 месяцев назад +2

    Очень доступно и понятно. Благодарю

    • @itgid
      @itgid  10 месяцев назад +1

      Рад что полезно.

  • @user-kh5vi4yi5t
    @user-kh5vi4yi5t 9 месяцев назад

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

  • @arsa946
    @arsa946 11 месяцев назад +2

    Спасибо! Было интересно и познавательно!

  • @viktoria7281
    @viktoria7281 2 месяца назад

    27:57
    Почему результаты разные:
    Оператор ++, стоящий после переменной, возвращает текущее значение переменной, а затем увеличивает её на единицу. Поэтому выражение accum++ сначала возвращает старое значение accum, а затем увеличивает его.
    В случае с тернарным оператором это приводит к тому, что accum++ возвращает значение accum до инкрементации, и оно же возвращается в reduce, то есть accum не изменяется в текущем вызове.

  • @Shved_2.0
    @Shved_2.0 11 месяцев назад +1

    Большое спасибо за содержательность,
    лайк занес,
    коммент для продвижения добавил

  • @user-ll4ky3lt8z
    @user-ll4ky3lt8z 11 месяцев назад

    Спасибо! Дошло до меня как это всё работает. Самое трудное для меня было разобраться что ставить после операторов - ? index : accum. Класс!

  • @AlexanderBogdanov-dw6cw
    @AlexanderBogdanov-dw6cw 10 месяцев назад +1

    Огромное вам спасибо. Очень крутое объяснение

    • @itgid
      @itgid  10 месяцев назад

      Спасибо.

  • @SamLessed
    @SamLessed 6 месяцев назад

    Лучший урок из всех что я видел можно сказать)

  • @user-wx9es3mf7t
    @user-wx9es3mf7t 11 месяцев назад

    Отличный урок, узнал для себя ещё несколько применений reduce. Был удивлён что не показали пример про удаление дубликатов из массива)

    • @itgid
      @itgid  10 месяцев назад

      Да можно. Только set проще.

  • @Oleg_57rus
    @Oleg_57rus 11 месяцев назад

    Здраствуйте, урок🔥

  • @alexanderkhayev5793
    @alexanderkhayev5793 11 месяцев назад +1

    Александр, небольшая подсказочка к вашему accum + 1 вместо accum++. Вместо accum++ там допускается использовать префиксную запись операции ++accum. .... reduce(accum, elem)=>++accum)

    • @itgid
      @itgid  11 месяцев назад

      Конечно. Но тогда не так драматично

  • @user-mq1ny2pu8m
    @user-mq1ny2pu8m 7 месяцев назад

    класс!

  • @holodina
    @holodina Месяц назад

    В последнем варианте можно было вместо accum++ использовать ++accum.

  • @panfilovandrey
    @panfilovandrey 10 месяцев назад

    А зачем присваивать все в accum, когда можно просто вернуть сумму (или результат вычисления) и оно присвоится? return acc>item?acc:item; или return acc+item; По идее, наши изменения переменной accum внутри функции никак не влияют на результат, только то, что возвращаем.

  • @trussardi2319
    @trussardi2319 10 месяцев назад

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

  • @MrKOHKyPEHT
    @MrKOHKyPEHT 11 месяцев назад

    Задачка из собеседования (подразумевает решение через reduce): есть массив объектов вида { name: 'Nik', age: 30 }. Превратить массив объектов в объект, ключами которого будут имена, а значениями - возраст.

    • @ostap6811
      @ostap6811 11 месяцев назад +1

      const arrayObj = [
      { name: "Nikoo", age: 20 },
      { name: "Nikyy", age: 10 },
      { name: "Nikee", age: 30 },
      ];
      let obj = ArrayObj.reduce((acum, current) => {
      acum[current.name] = current.age;
      return acum;
      }, { } );
      console.log(obj);

    • @JanTalan
      @JanTalan 9 месяцев назад

      @@ostap6811 скопировал ..вышла ошибка ..когда обьявляли arrayObj с маленькой буквы а потом с заглавной..исправил и все работает..я как понял это Фигурные скобки в конце в обьект переводят да?

  • @Nine_Tails
    @Nine_Tails 11 месяцев назад

    Александр, сейчас будет стыдно, но я все равно спрошу)
    Предисловие:
    У меня два года стажа уже, но обучался по вашим ютуб урокам в том числе, за что вам огромная благодарность
    Не отписался, так как самоучка, а вы хорошо объясняете и нет, нет, да гляжу ваши интересные новые видео, чтоб, что-то повторить, что забыл или открыть с новой стороны
    Думаю ок, редьюс знаю, но до сих пор использую с неохотой) да и на практике мне он очень, очень редко нужен, но нужен, будем вспоминать
    Сам вопрос:
    в общем-то смотрел видео в формате, вы даете задачку, сам делаю, смотрю результат, смотрю, что вышло у вас
    в последнем примере очень удивился, когда получил 0, думал минуты 3 пока, не попробовал асс+1, вместо сокращенной формулы
    Я конечно доволен, что сам догнал, но вопрос почему краткая запись не сработала и что там случилось с преобразованием, меня мучает до сих пор
    В конце видео вы показали, что у вас так же, но к сожалению не объяснили почему(
    да мне стыдно, но лучше показаться глупым и узнать, чем так и остаться глупым

    • @itgid
      @itgid  11 месяцев назад +1

      Лучший способ запомнить - документация :)
      Постфиксная запись a++ возвращает значение а потом увеличивает.
      Префиксная ++a увеличивает, потом возвращает
      Догадаться нельзя - только прочитать доку и запомнить.

    • @Nine_Tails
      @Nine_Tails 11 месяцев назад

      @@itgid спасибо за ответ,
      ну когда программист самоучка, дока приходит на ум последней)
      получается когда у нас а++, то сначала происходит ретёрн, а потом интерпретатор увеличивает значение в пустоту?

  • @DH-yv8um
    @DH-yv8um 11 месяцев назад

    Почему внутри условии когда зайдёшь нулевое значение массива , код работает не правильно
    При нахождении максимального индекса
    Пример : if(arr[0]>arr[I] 😊

  • @AmeSagiriAlbion
    @AmeSagiriAlbion 11 месяцев назад

    В строке нахождения макс числа (item>accum)?accum=item:accum обязательно писать accum=item? Можно сразу вернуть item?

  • @dimkagera6955
    @dimkagera6955 11 месяцев назад

    Обожаю этот канал, очень информативно, спасибо Вам, но я в голос ору, когда слышу эту букву Гэ, особенно в слове бэкГраунд ))

  • @recentlygod6578
    @recentlygod6578 11 месяцев назад +1

    Прежде чем произносить английские слова типа reduce, переведи и послушай как правильно ударение стоит

    • @Zzaharich
      @Zzaharich 11 месяцев назад

      Хотів також це написати, якщо вже вчиш, то вчи правильно в усьому!

    • @ignimosanti8321
      @ignimosanti8321 11 месяцев назад +2

      Чуваки... успокойтесь.. это топ препод на просторах Ютуба. Не доябывайтесь по херне.

    • @PowWowVideo
      @PowWowVideo 11 месяцев назад +1

      Это мелочь, но пипец как режет ухо и совершенно портит впечатление.... :(
      Попробуйте - рэдьЮус... сразу понятнее ;)

    • @8TieR
      @8TieR 11 месяцев назад

      а я привык reduce произносить так, как оно и пишется (это ближе к испанскому произношению)

  • @yuriilukianovych8660
    @yuriilukianovych8660 11 месяцев назад

    accum++ замінити на ++accum

  • @eleukhin
    @eleukhin 11 месяцев назад

    Поиск макс. значения еще короче:
    const max = array.reduce((total, item) => Math.max(item));

    • @vinosserg
      @vinosserg 11 месяцев назад +2

      Пример не верный, он вернет просто последний элемент! если уже через Math.max, то
      const max = Math.max(...array) или
      const max = Math.max.apply(null, array);

  • @userfhhoyhgfdgg
    @userfhhoyhgfdgg 11 месяцев назад

    Спасибо за работу. Но ваш рЭдьюс как серпом по яйцам. Понятно что не урок английского, но и слово не такое уже и редкое в этой сфере.
    Или может прикол какой?

  • @karlengels4956
    @karlengels4956 11 месяцев назад

    Продалжай в том же духе мне очень нравится как ты все обясняешь!