27:57 Почему результаты разные: Оператор ++, стоящий после переменной, возвращает текущее значение переменной, а затем увеличивает её на единицу. Поэтому выражение accum++ сначала возвращает старое значение accum, а затем увеличивает его. В случае с тернарным оператором это приводит к тому, что accum++ возвращает значение accum до инкрементации, и оно же возвращается в reduce, то есть accum не изменяется в текущем вызове.
Во всех уроках показыаают работу с одномерными массивами, на практике приходится чаще работать с многомернвми массивами, производить сортировки и фильтрацию по люой строке элементов многомерного массива. . Начинающий тут же впадает в ступор когда нужно выполнить новомодные операции типа reduceи возвращается к циклам
Александр, небольшая подсказочка к вашему accum + 1 вместо accum++. Вместо accum++ там допускается использовать префиксную запись операции ++accum. .... reduce(accum, elem)=>++accum)
Александр, сейчас будет стыдно, но я все равно спрошу) Предисловие: У меня два года стажа уже, но обучался по вашим ютуб урокам в том числе, за что вам огромная благодарность Не отписался, так как самоучка, а вы хорошо объясняете и нет, нет, да гляжу ваши интересные новые видео, чтоб, что-то повторить, что забыл или открыть с новой стороны Думаю ок, редьюс знаю, но до сих пор использую с неохотой) да и на практике мне он очень, очень редко нужен, но нужен, будем вспоминать Сам вопрос: в общем-то смотрел видео в формате, вы даете задачку, сам делаю, смотрю результат, смотрю, что вышло у вас в последнем примере очень удивился, когда получил 0, думал минуты 3 пока, не попробовал асс+1, вместо сокращенной формулы Я конечно доволен, что сам догнал, но вопрос почему краткая запись не сработала и что там случилось с преобразованием, меня мучает до сих пор В конце видео вы показали, что у вас так же, но к сожалению не объяснили почему( да мне стыдно, но лучше показаться глупым и узнать, чем так и остаться глупым
Лучший способ запомнить - документация :) Постфиксная запись a++ возвращает значение а потом увеличивает. Префиксная ++a увеличивает, потом возвращает Догадаться нельзя - только прочитать доку и запомнить.
@@itgid спасибо за ответ, ну когда программист самоучка, дока приходит на ум последней) получается когда у нас а++, то сначала происходит ретёрн, а потом интерпретатор увеличивает значение в пустоту?
А зачем присваивать все в accum, когда можно просто вернуть сумму (или результат вычисления) и оно присвоится? return acc>item?acc:item; или return acc+item; По идее, наши изменения переменной accum внутри функции никак не влияют на результат, только то, что возвращаем.
Задачка из собеседования (подразумевает решение через reduce): есть массив объектов вида { name: 'Nik', age: 30 }. Превратить массив объектов в объект, ключами которого будут имена, а значениями - возраст.
@@ostap6811 скопировал ..вышла ошибка ..когда обьявляли arrayObj с маленькой буквы а потом с заглавной..исправил и все работает..я как понял это Фигурные скобки в конце в обьект переводят да?
Большое спасибо! Очень доходчиво. Вроде как нежелательно не указывать начальное значение, там где суммируется, на случай пустого массива, или я не прав?
Почему внутри условии когда зайдёшь нулевое значение массива , код работает не правильно При нахождении максимального индекса Пример : if(arr[0]>arr[I] 😊
Пример не верный, он вернет просто последний элемент! если уже через Math.max, то const max = Math.max(...array) или const max = Math.max.apply(null, array);
Спасибо за работу. Но ваш рЭдьюс как серпом по яйцам. Понятно что не урок английского, но и слово не такое уже и редкое в этой сфере. Или может прикол какой?
Продалжай в том же духе мне очень нравится как ты все обясняешь!
Давай про this такой-же видос) лайк)
Очень доступно и понятно. Благодарю
Рад что полезно.
Спасибо! Было интересно и познавательно!
Большое спасибо за содержательность,
лайк занес,
коммент для продвижения добавил
Спасибо! Дошло до меня как это всё работает. Самое трудное для меня было разобраться что ставить после операторов - ? index : accum. Класс!
27:57
Почему результаты разные:
Оператор ++, стоящий после переменной, возвращает текущее значение переменной, а затем увеличивает её на единицу. Поэтому выражение accum++ сначала возвращает старое значение accum, а затем увеличивает его.
В случае с тернарным оператором это приводит к тому, что accum++ возвращает значение accum до инкрементации, и оно же возвращается в reduce, то есть accum не изменяется в текущем вызове.
Огромное вам спасибо. Очень крутое объяснение
Спасибо.
Лучший урок из всех что я видел можно сказать)
Во всех уроках показыаают работу с одномерными массивами, на практике приходится чаще работать с многомернвми массивами, производить сортировки и фильтрацию по люой строке элементов многомерного массива. . Начинающий тут же впадает в ступор когда нужно выполнить новомодные операции типа reduceи возвращается к циклам
класс!
Отличный урок, узнал для себя ещё несколько применений reduce. Был удивлён что не показали пример про удаление дубликатов из массива)
Да можно. Только set проще.
Здраствуйте, урок🔥
Александр, небольшая подсказочка к вашему accum + 1 вместо accum++. Вместо accum++ там допускается использовать префиксную запись операции ++accum. .... reduce(accum, elem)=>++accum)
Конечно. Но тогда не так драматично
В последнем варианте можно было вместо accum++ использовать ++accum.
Александр, сейчас будет стыдно, но я все равно спрошу)
Предисловие:
У меня два года стажа уже, но обучался по вашим ютуб урокам в том числе, за что вам огромная благодарность
Не отписался, так как самоучка, а вы хорошо объясняете и нет, нет, да гляжу ваши интересные новые видео, чтоб, что-то повторить, что забыл или открыть с новой стороны
Думаю ок, редьюс знаю, но до сих пор использую с неохотой) да и на практике мне он очень, очень редко нужен, но нужен, будем вспоминать
Сам вопрос:
в общем-то смотрел видео в формате, вы даете задачку, сам делаю, смотрю результат, смотрю, что вышло у вас
в последнем примере очень удивился, когда получил 0, думал минуты 3 пока, не попробовал асс+1, вместо сокращенной формулы
Я конечно доволен, что сам догнал, но вопрос почему краткая запись не сработала и что там случилось с преобразованием, меня мучает до сих пор
В конце видео вы показали, что у вас так же, но к сожалению не объяснили почему(
да мне стыдно, но лучше показаться глупым и узнать, чем так и остаться глупым
Лучший способ запомнить - документация :)
Постфиксная запись a++ возвращает значение а потом увеличивает.
Префиксная ++a увеличивает, потом возвращает
Догадаться нельзя - только прочитать доку и запомнить.
@@itgid спасибо за ответ,
ну когда программист самоучка, дока приходит на ум последней)
получается когда у нас а++, то сначала происходит ретёрн, а потом интерпретатор увеличивает значение в пустоту?
А зачем присваивать все в accum, когда можно просто вернуть сумму (или результат вычисления) и оно присвоится? return acc>item?acc:item; или return acc+item; По идее, наши изменения переменной accum внутри функции никак не влияют на результат, только то, что возвращаем.
Задачка из собеседования (подразумевает решение через reduce): есть массив объектов вида { name: 'Nik', age: 30 }. Превратить массив объектов в объект, ключами которого будут имена, а значениями - возраст.
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);
@@ostap6811 скопировал ..вышла ошибка ..когда обьявляли arrayObj с маленькой буквы а потом с заглавной..исправил и все работает..я как понял это Фигурные скобки в конце в обьект переводят да?
Большое спасибо! Очень доходчиво. Вроде как нежелательно не указывать начальное значение, там где суммируется, на случай пустого массива, или я не прав?
Почему внутри условии когда зайдёшь нулевое значение массива , код работает не правильно
При нахождении максимального индекса
Пример : if(arr[0]>arr[I] 😊
В строке нахождения макс числа (item>accum)?accum=item:accum обязательно писать accum=item? Можно сразу вернуть item?
Обожаю этот канал, очень информативно, спасибо Вам, но я в голос ору, когда слышу эту букву Гэ, особенно в слове бэкГраунд ))
Поиск макс. значения еще короче:
const max = array.reduce((total, item) => Math.max(item));
Пример не верный, он вернет просто последний элемент! если уже через Math.max, то
const max = Math.max(...array) или
const max = Math.max.apply(null, array);
accum++ замінити на ++accum
Прежде чем произносить английские слова типа reduce, переведи и послушай как правильно ударение стоит
Хотів також це написати, якщо вже вчиш, то вчи правильно в усьому!
Чуваки... успокойтесь.. это топ препод на просторах Ютуба. Не доябывайтесь по херне.
Это мелочь, но пипец как режет ухо и совершенно портит впечатление.... :(
Попробуйте - рэдьЮус... сразу понятнее ;)
а я привык reduce произносить так, как оно и пишется (это ближе к испанскому произношению)
Спасибо за работу. Но ваш рЭдьюс как серпом по яйцам. Понятно что не урок английского, но и слово не такое уже и редкое в этой сфере.
Или может прикол какой?
Продалжай в том же духе мне очень нравится как ты все обясняешь!