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