Для числового массива: arrayWithDublicates.sort((x1, x2) => x1 - x2).reduce((acc, next, index, arr) => next === arr[index + 1] ? [...acc, next] : acc, []). Для других типов данных меняем сортировку, которая была подробно рассмотрена в ролике👆
@@Yupitrerда жестко бывает т.к. компания небольшая и должность размыта.. я типа фронтенд, но так же и бекенд писать приходится, и на AWS колупаться постоянно.. такое..но, бабки платят и хорошо;)
Для разворачивания массива можно воспользоваться методом массива reduceRight, который работает как обычный, но итерируется с конца массива const reversedArray = array.reduceRight((accum, elem) => { accum.push(elem); return accum; }, []);
12:00: вторым аргументом назначаем this = наш array. первым аргументом, т.е. в качестве вызываемого колбэка передаем метод массива pop(), который внутри обращается к this т.е. к массиву, у которого вызывается. если я правильно поняла, когда что-то передается в качестве аргумента оно теряет контекст, потому что это вроде как эквивалентно присвоению переменной. поэтому нам нужно передать контекст вторым аргументом
Делюсь опытом, была задача на собеседовании написать функцию для проверки слова на палиндром, там работа и с массивом, и с строкой. Кто не знает, что это такое и как ее решать, советую глянуть.
А чего там решать? Слово в массив, массив развернуть и склеить в слово, результат сравнить с первоначальный словом. Можно с циклом заморочится или рекурсией. Для зарядки ума.
В версиях node до 12, можно обмануть систему, т.к. сорт на малых объемах массива использует сортировку слиянием, мы можем произвести следующиее, a.sort(e=>1), еденицу можно заменить на любое положительное число, оно будет выполнять роль положительного резульятата сравнения элементов слева на право. Если уж идти по тропе шизокода, стоит писать все в круглых скобках, дабы избавиться от ключевых слов, методы вызывать следующим образом - a=[3,4,5,1,2,6], [j,o,i,n]=`join`, eval(a[j+o+i+n]`+`) и многое другое ))))) И решение - a.map(a.pop,[...a]), взято из задачи 3 kyu на CW ))))) У тебя хороший контент по технологиям, но задачки, это совсем другое, все тонкости JS врядли выйдет разобрать, да это и не нужно обычным людям. Ставлю этому видику 7kyu ))))
map(callbackFn, thisArg) Array(array.length).fill(null).map([].pop, [...array]); де: Array(array.length).fill(null) - масив будь-яких значень аналогічної довжини [].pop - потрібна сама функція [...array] - масив, з якого на кожному кроці буде забиратися останнє значення. Якщо без ... (деструктиризації), тоді очистить попередній масив array
В предпоследней задаче можно было бы воспользоваться методом sort: const arr = [1, 2, 3, 4, 5, 6, 88]; const reversed = arr.sort((a, b) => { return b - a; }); console.log(reversed);
Стало интересно и пошел разбираться. С некоторым успехом вроде что-то вышло.😁 Для данной записи: [...ourArr].map(array.pop, ourArr) - array.pop - это мы просто передаем метод массива, аналогично и этой записи: [].pop Метод array.pop удаляет последний элемент массива и возвращает его. Второй агрумент "ourArr" для метода map нужен для того, чтобы именно было что возвращать в новый массив, который создает метод map. Значение для нового элемента массива возвращается на каждой итерации из ourArr, который мы передали для метода [].pop в качестве this. Новый массив [...ourArr] нужен только для того, чтобы было по чему нам итерироваться. Будет аналогично и работать так же для записи: [undefined, undefined, undefined, undefined, undefined].map(array.pop, ourArray) Кажется, что я только запутал.😂
Array.from( new Array(arr.length) , () => arr.pop() ) в пустой массив той же длины накидываются попнутые значения. Так это выглядит в читаемой реализации, хотя всё равно способ идиотский, так как происходит мутация исходного массива. Еще при этом зачем-то усложнил получением ссылки на метод массива и прокинутым в неё this. Любителей всё усложнять везде же любят)
@@Kaorichvagon Здесь, кстати, тоже можно поумничать с Array.prototype.pop и thisArg, но хотя бы сохранив иммутабельность исходного массива: Array.from(arr, [].pop, [...arr]) А учитывая, что вторым аргументом Array.from является mapFn, то можно просто использовать сам метод map: arr.map([].pop, [...arr]) Но можно решить и рациональнее: arr.map((_, i, arr) => arr.at(~i))
Спасибо, что поделились решением! Способ вполне работающий, но у него всё же квадратичная сложность по времени из-за пепесоздания массива на каждой итерации. Можно переписать примерно так: array.reduceRight((acc, item) => (acc.push(item), acc), []) ...или даже решить через map: array.map((_, i, arr) => arr.at(~i))
Стосовно розвертання масиву через map(array.pop, array) функція видаляє останній елемент масиву і повертає його, який в свою чергу записується в результат функції map. А в якості this для метода pop передається array, який скорочується.
@@wisejs сортировкой делать было нельзя. Поэтому прошелся обычным for-ом. Но и это их не устроило. Сказали мой алгоритм слишком затратный. Это было тюлет 3 назад
@@wisejs простой сортировкой эту задачу не решить, потому что могут быть дубликаты, придется set еще городить, это не рационально upd: зато читабельно, и чаще всего на фронте глубоко пофиг, сколько займет операция с массивом - 3мс или 10мс, а вот разбираться с кодом из кучи циклов нахрен никому не упало
let max = -Infinity, second = -Infinity, third = -Infinity for (const value of arr) { if (value > max) { [second, max] = [max, value] // save previous max } else if (value < max && value > second) { second = value // new second biggest third = second // new third biggest } else if (value < second && value > third) { third = value // new third biggest } } return [second, third]
@@wisejs но сначала-то все примеры без мутации что мешало array.map([].pop, [...array]) ? если мутировать оригинальный массив - надо было и с двумя указателями дать пример
Такой легкотни на собеседовании быть просто не может. Это даже не уровень джуна. Да, задачи тоже на массивы могут быть, но они будут куда сложнее и не такими очевидными, да еще и с особыми требованиями, типа сделать то-то, не используя что-то (например, какие-то стандартные методы) или не используя дополнительную память, либо показать алгоритм с заданной сложностью. В общем, такие задачи могут быть лишь на собеседовании в какой-то сказочной компании. А таковых давно не существует.
@@McNeelone я думаю он имел ввиду работу с DOM элементами , если сразу просят работать с ними ,то лучше сразу покинуть собеседование... Я так его понял
@@plart2006 ну такой себе совет. Если ты умеешь крутить деревья, то почему бы и не покрутить? Если не умеешь, то да, можно сразу уходить: у тебя и у компании разные взгляды на то, что ты должен знать и уметь на той позиции, куда тебя собеседуют. И консенсус вряд-ли получится.
Почему ты таким устаревшим циклом пользуешься? И ещё вводишь в заблуждение новичков! А также тут многие пишут что таких задач нет на собесах! Зря потерянное время …
Все ок но почему "маС"? Разве Mathematics читается маСематикс? Ладно хоть не маЗ, но слушаете как произносится слово правильно а то вы говорите я не пойму что за маС
а нельзя в максимальном или минимальном элементе массива сделать так? const arr = [3, 2, 4, 5, 1] const min = arr.sort()[0] const max = arr.sort()[arr.length - 1]
Собеседование довольно стрессовый процесс. И даже, порой простые вопросы и задачи вызывают трудности. Даже на 1 задачу среднего уровня нужно выделять все собеседование, а ведь спросить хочется не только 1 задачу.
только начал смотреть: у тебя ошибка в коде, за sum += array[i] нужно ; ставить. вторая ошибка это глупое, нечетабельное использование reduce что бы просто сумму найти. И также делитантский год бет точек с запятой. треться eval() - скоро она вообще перестанет поддерживаться в js - причина: безопасность. Твои советы подойдут что бы завалить собес, а не пройти :) четыре, зачем ты итерацию в форе с нуля начинаешь?!! for (let i = 0; ... - правильно так: for(let i = 1; - ведь нулевую ячейку ты уже в переменную sum присвоил. о точка с запятой я уже молчу. Потом глупое использование тернарного оператора ... Рано тебе ещё подобные обучающие видео записывать - сам научись сперва - а потом других учи. Пацаны это не программист - не слушайте этот бред. На комерческих проектах таких делитантов не бывает.
Искать максимум в массиве через сортировку - это дичь. Хуже неё только последний способ Math.max(...arr), приводящий к переполнению стека на длинном массиве. Автор, не учи джунов всякому плохому )
Чаще задвигают всякую теоретическую хрень типа прототипов и принципов ооп. Как говорится, особый js для собесов, который в реальной работе никогда не используется
array.reduce((acc:number, next:number) - Почему у меня аккумуляторы не работают? Все примеры из видео с аккумулятормаи у меня не пашут. Хотя reduce вот так работает: const array = [1, 2, 2, 4, 5, 6, 6, 100]; let sum = array.reduce(function (currentSum, currentNumber) { return currentSum + currentNumber } , 0)
Домашнее задание: Найти дубликаты (повторяющиеся элементы) в массиве. Решение присылайте в комментарии 👇
uniqueNumbers = new Set(array)
@@imthebest8000 это не найдёт дубликаты
@@9mikaela да, я просто не правильно прочёл задание
Для числового массива: arrayWithDublicates.sort((x1, x2) => x1 - x2).reduce((acc, next, index, arr) => next === arr[index + 1] ? [...acc, next] : acc, []). Для других типов данных меняем сортировку, которая была подробно рассмотрена в ролике👆
array.filter( (el, i) => i !== array.lastIndexOf(el) )
Сейчас готовлюсь к собесам на новую работу, ставил на паузу и решил всё, НО некоторые твои варианты взорвали мозг) реально круто!
Как новая работа?
@@Yupitrerда жестко бывает т.к. компания небольшая и должность размыта.. я типа фронтенд, но так же и бекенд писать приходится, и на AWS колупаться постоянно.. такое..но, бабки платят и хорошо;)
Какие задачи по алгоритмам пригодились для собеса
?
@@adamarturov6361 это год назад уже было, не помню, но может быть что угодно из них.
Как раз прохожу собесы сейчас. То, что нужно как раз👌 . Спасибо 😉
Для разворачивания массива можно воспользоваться методом массива reduceRight, который работает как обычный, но итерируется с конца массива
const reversedArray = array.reduceRight((accum, elem) => {
accum.push(elem);
return accum;
}, []);
array.reduceRight((acc, item) => {
return [
...acc, item
]
},
[])
Пушить в аккумулятор плохая практика
@@SuperPirks в каком месте это плохая практика? Вот клонировать массив на каждой итерации - это действительно плохая практика.
@@SuperPirks лучше acc.concat(item)
12:00: вторым аргументом назначаем this = наш array. первым аргументом, т.е. в качестве вызываемого колбэка передаем метод массива pop(), который внутри обращается к this т.е. к массиву, у которого вызывается. если я правильно поняла, когда что-то передается в качестве аргумента оно теряет контекст, потому что это вроде как эквивалентно присвоению переменной. поэтому нам нужно передать контекст вторым аргументом
благодарю за момент с сортировкой, на прошлом собесе не смог внятно ответить, а тут вот оно как))
Перевернуть массив можно и нужно за O(n) и без доппамяти.
Нужно в цикле от 0 до length/2 менять местами i-ый элемент с length - 1 - i
Спасибо,Максим,что продолжаете радовать нас отличным контентом,очень крутое видео!
Дружище, ты просто машина, я бы сказал - живой калькулятор)
Подписка и лайк однозначно!
Классный видосик. Гоу теперь про объекты :)
Делюсь опытом, была задача на собеседовании написать функцию для проверки слова на палиндром, там работа и с массивом, и с строкой. Кто не знает, что это такое и как ее решать, советую глянуть.
А где найти видео не смог найти видео с решением задачи
А чего там решать? Слово в массив, массив развернуть и склеить в слово, результат сравнить с первоначальный словом. Можно с циклом заморочится или рекурсией. Для зарядки ума.
Найти максимальный элемент массива через сортировку это гениально
Это был сарказм? Просто я новичок и немогу пока точно понять хорошо это или плохо.
@@LuNa-om8ci объясню проще: вместо линейной сложности мы используем квадратичную
Решение второй задачи, зачем мудрить?))
const max = Math.max(...array);
const min = Math.min(...array);
Классный выпуск,большое спасибо! js, reduce, map, filter, sort, pop.
Спасибо за ключевые слова!
спасибо, контент огонь
В версиях node до 12, можно обмануть систему, т.к. сорт на малых объемах массива использует сортировку слиянием, мы можем произвести следующиее, a.sort(e=>1), еденицу можно заменить на любое положительное число, оно будет выполнять роль положительного резульятата сравнения элементов слева на право. Если уж идти по тропе шизокода, стоит писать все в круглых скобках, дабы избавиться от ключевых слов, методы вызывать следующим образом - a=[3,4,5,1,2,6], [j,o,i,n]=`join`, eval(a[j+o+i+n]`+`) и многое другое )))))
И решение - a.map(a.pop,[...a]), взято из задачи 3 kyu на CW )))))
У тебя хороший контент по технологиям, но задачки, это совсем другое, все тонкости JS врядли выйдет разобрать, да это и не нужно обычным людям.
Ставлю этому видику 7kyu ))))
Интересно 🧐
@@wisejs Если человек хочет впечатлить собеседующего, рекомендую провести тутор - как писать код столбиком, по 1 символу в строке ))))
@@lambdius 😂
Класс! Сделай еще задачки с циклами))
Хорошая идея)
map(callbackFn, thisArg)
Array(array.length).fill(null).map([].pop, [...array]);
де:
Array(array.length).fill(null) - масив будь-яких значень аналогічної довжини
[].pop - потрібна сама функція
[...array] - масив, з якого на кожному кроці буде забиратися останнє значення. Якщо без ... (деструктиризації), тоді очистить попередній масив array
array.map([].pop, [...array])
ты крутой! я подписался) нажал лайк, надеюсь у вас будут выходить такие позновательные видео
Классное видео. Интересные примеры. Спасибо
Привет ✌️
Спасибо 🔥👍
👌 буду решать
Дз: создать объект где ключом будут значения элементов массива, а значением - количество их повторений и в зависимости от задачи перебрать объект.
Все так, но вместо объекта лучше Map 😆
it's most popular information! thanks
09:50
const arrow = [1,2,3,4,5,6,7,9,12]
console.log(arrow.sort(() => {return -1}));
тоже идеально будет работать
отлично решение, вот его упрощенная запись (без return и фигурных скобок):
arrow.sort(() => -1)
Обычно в продакшене готовые апи юзаешь, Бек уже все отфильтровал )
Привет, найти самое редковстречающееся значение в числовом массиве, или сгенерировать n массив, заполненный рандомными числами от min до max)
Тоже попадалось с рандомными числами
Касательно варианта с разворотом массива, можно еще воспользоваться reduceRight. =)
arr.reduceRight((p, c) => [...p, c], []);
С filter() не надо приводить к boolean через "!!", движок сам это сделает.
привет . спасибо за видео
Полезно ! спасибо !
Great job 🔥 Keep on going!
За eval по рукам надо бить))
В предпоследней задаче можно было бы воспользоваться методом sort:
const arr = [1, 2, 3, 4, 5, 6, 88];
const reversed = arr.sort((a, b) => {
return b - a;
});
console.log(reversed);
не можно, потому что задача развернуть а не отсортировать. вот с таким массивом не будет работать верно: const arr = [1, 22, 3, 4, 5, 6, 88]
спасибо , продолжай!
Стало интересно и пошел разбираться. С некоторым успехом вроде что-то вышло.😁
Для данной записи: [...ourArr].map(array.pop, ourArr)
- array.pop - это мы просто передаем метод массива, аналогично и этой записи: [].pop
Метод array.pop удаляет последний элемент массива и возвращает его.
Второй агрумент "ourArr" для метода map нужен для того, чтобы именно было что возвращать в новый массив, который создает метод map. Значение для нового элемента массива возвращается на каждой итерации из ourArr, который мы передали для метода [].pop в качестве this.
Новый массив [...ourArr] нужен только для того, чтобы было по чему нам итерироваться. Будет аналогично и работать так же для записи:
[undefined, undefined, undefined, undefined, undefined].map(array.pop, ourArray)
Кажется, что я только запутал.😂
Ход мыслей верный 🙂
@@wisejs Ну и хорошо значит.😁
Array.from( new Array(arr.length) , () => arr.pop() ) в пустой массив той же длины накидываются попнутые значения. Так это выглядит в читаемой реализации, хотя всё равно способ идиотский, так как происходит мутация исходного массива. Еще при этом зачем-то усложнил получением ссылки на метод массива и прокинутым в неё this. Любителей всё усложнять везде же любят)
@@Kaorichvagon Здесь, кстати, тоже можно поумничать с Array.prototype.pop и thisArg, но хотя бы сохранив иммутабельность исходного массива:
Array.from(arr, [].pop, [...arr])
А учитывая, что вторым аргументом Array.from является mapFn, то можно просто использовать сам метод map:
arr.map([].pop, [...arr])
Но можно решить и рациональнее:
arr.map((_, i, arr) => arr.at(~i))
Задача. Есть четыре массива по 4 цифры, цифры разбросаны, найти максимальное число , и вывести новый массив максимальных чисел.
Сводится к поиску максимального числа в матрице (насколько я понимаю)
Классное видео, благодарю автора за освежение памяти! Надеюсь вы живы. Говорят, в этом году всё кончится.
7:02 Как вы открыли увеличитель, которая типа лупы?
Домашнее задание: Можно использовать new Set... [...new Set(someArray)]
Не убрать их, а найти :)
Отличный видос)
От души
Спасибо, array.filter(item => item) тоже сработает
лайк за localeCompare
Альтернатива для reverse)
array.reduceRight((acc, item) => [...acc, item], [])
Это когда лень писать for с обратным циклом))
Спасибо, что поделились решением! Способ вполне работающий, но у него всё же квадратичная сложность по времени из-за пепесоздания массива на каждой итерации. Можно переписать примерно так: array.reduceRight((acc, item) => (acc.push(item), acc), [])
...или даже решить через map:
array.map((_, i, arr) => arr.at(~i))
@@SerzhNesteruk с первым вашим решением согласен, да, но второе читается сложновато)) заставляет залезть в доку и чекнуть инфу про тильду и at
прикольный канал, не помню откуда я тебя взял
🧐
а почему, если не использовать деструктуризацию в выражении array.map(array.pop, array), вернет [6,6,5,4,,,] ?
Стосовно розвертання масиву через map(array.pop, array) функція видаляє останній елемент масиву і повертає його, який в свою чергу записується в результат функції map. А в якості this для метода pop передається array, який скорочується.
Есть еще функция Есть еще функция getMaxOfArray ([1, 2, 3])
не понял про array.filter(boolean) почему работает? Если весь массив передается, почему он возвращает все те что тру ведь boolean === true равно фолс
const max = arr.toSorted((a, b) => b - a)[0];
Смотрящим через 2 года: нет, настолько простые задачи вас на собеседовании решать не попросят.
Привет ) Скажи пожалуйста что за шрифт у тебя в web-storm ? Заранее спасибо )
Дефолтный, не менял
@@wisejs спасибо )
jetbrains mono
const arrey = [1, 2, 3, 4]
const xw = arrey.reduce((x, y) => x + y);
console.log(xw)
это по короче
Можно больше задач по JS c собеседований
eval это прикол конечно, думаю лучше так не делать на собеседовании 😅
Почему? Это самый краткий и самый понятный способ.
8:38 ошибка в строке 23, в if-е должен стоять ===.
а разве нельзя развернуть массив тем же методом sort, только возвращать x2 - x1 вместо x1 - x2?
и в filter просто использовать сам текущий item без boolean
x2 - x1 - отсортирует по убыванию
да, так можно, но не особо очевидно как по мне
Нет, нельзя. Если массив изначально не сортирован, то такой "разворот" вернёт сортированный.
3:11 через sort было бы легче и быстрее сделать как мне кажется
4:19
Это websrorm ?
Никто не пишет вручную алгоритмы, вместо этого используют lodash, в котором они реализованы
В последней задаче зачем в иф делать !! если все что в условии и так приведется в бул значение
просили найти второе и третье максимальное значение массива перебрав его всего один раз
Как решали? Сортировкой?
@@wisejs сортировкой делать было нельзя. Поэтому прошелся обычным for-ом. Но и это их не устроило. Сказали мой алгоритм слишком затратный. Это было тюлет 3 назад
@@azizoid O(n2 если 2 раза перебирал. Хотели, наверное, быстрее.
@@wisejs простой сортировкой эту задачу не решить, потому что могут быть дубликаты, придется set еще городить, это не рационально
upd: зато читабельно, и чаще всего на фронте глубоко пофиг, сколько займет операция с массивом - 3мс или 10мс, а вот разбираться с кодом из кучи циклов нахрен никому не упало
let max = -Infinity,
second = -Infinity,
third = -Infinity
for (const value of arr) {
if (value > max) {
[second, max] = [max, value] // save previous max
} else if (value < max && value > second) {
second = value // new second biggest
third = second // new third biggest
} else if (value < second && value > third) {
third = value // new third biggest
}
}
return [second, third]
Последний пример мутирует предыдущий массив, это плохо)
Последний пример какой задачи?
Развернуть массив
не всегда плохо, зависит от требований
@@wisejs но сначала-то все примеры без мутации
что мешало array.map([].pop, [...array]) ?
если мутировать оригинальный массив - надо было и с двумя указателями дать пример
Такой легкотни на собеседовании быть просто не может. Это даже не уровень джуна. Да, задачи тоже на массивы могут быть, но они будут куда сложнее и не такими очевидными, да еще и с особыми требованиями, типа сделать то-то, не используя что-то (например, какие-то стандартные методы) или не используя дополнительную память, либо показать алгоритм с заданной сложностью. В общем, такие задачи могут быть лишь на собеседовании в какой-то сказочной компании. А таковых давно не существует.
Сомнительно чтобы давали настолько простые задачи на собесе
Если просят крутить деревья, лучше сразу уйти. Потом такие особи крутят тебе мозги
@@plart2006 по подробней можно?
@@McNeelone я думаю он имел ввиду работу с DOM элементами , если сразу просят работать с ними ,то лучше сразу покинуть собеседование...
Я так его понял
@@KrivovNikolay бинарные деревья поиска
@@plart2006 ну такой себе совет. Если ты умеешь крутить деревья, то почему бы и не покрутить? Если не умеешь, то да, можно сразу уходить: у тебя и у компании разные взгляды на то, что ты должен знать и уметь на той позиции, куда тебя собеседуют. И консенсус вряд-ли получится.
Почему ты таким устаревшим циклом пользуешься? И ещё вводишь в заблуждение новичков! А также тут многие пишут что таких задач нет на собесах! Зря потерянное время …
Все ок но почему "маС"? Разве Mathematics читается маСематикс? Ладно хоть не маЗ, но слушаете как произносится слово правильно а то вы говорите я не пойму что за маС
ну не знаю не знаю, мне и на джуна задачи сложнее попадались
а нельзя в максимальном или минимальном элементе массива сделать так?
const arr = [3, 2, 4, 5, 1]
const min = arr.sort()[0]
const max = arr.sort()[arr.length - 1]
да кнчн
Если в массиве будет 100, то max у Вас будет равна 5, что будет ошибкой.
тернарным, а не тренарным
каким каким оператором? тренарным? 😂 может тернарным?
const A = [1, 2, 3, 4, 5, 2, 1];
console.log([...new Set(A.filter((a) => A.length - A.filter((f) => f != a).length > 1))]);
Меня одного выворачивает, когда люди пытаются произнести английские слова как носители в русской речи?
Вопросы на уровне стажёра, на Джуна уж посложнее задачи спрашивают, как минимум, средний уровень с leetcode
Собеседование довольно стрессовый процесс. И даже, порой простые вопросы и задачи вызывают трудности. Даже на 1 задачу среднего уровня нужно выделять все собеседование, а ведь спросить хочется не только 1 задачу.
Почему этот парень не моргает а я сразу не понял че не так🤔
ну middle вряд ли
Сделать плоский массив, нельзя использовать flat
А также нельзя использовать рекурсию
А так же, нельзя использовать массив 😆
@@wisejs будет тогда сложно
только начал смотреть: у тебя ошибка в коде, за sum += array[i] нужно ; ставить.
вторая ошибка это глупое, нечетабельное использование reduce что бы просто сумму найти. И также делитантский год бет точек с запятой.
треться eval() - скоро она вообще перестанет поддерживаться в js - причина: безопасность. Твои советы подойдут что бы завалить собес, а не пройти :)
четыре, зачем ты итерацию в форе с нуля начинаешь?!! for (let i = 0; ... - правильно так: for(let i = 1; - ведь нулевую ячейку ты уже в переменную sum присвоил. о точка с запятой я уже молчу.
Потом глупое использование тернарного оператора ...
Рано тебе ещё подобные обучающие видео записывать - сам научись сперва - а потом других учи.
Пацаны это не программист - не слушайте этот бред. На комерческих проектах таких делитантов не бывает.
Искать максимум в массиве через сортировку - это дичь. Хуже неё только последний способ Math.max(...arr), приводящий к переполнению стека на длинном массиве. Автор, не учи джунов всякому плохому )
а как правильно? я делал через reduce
@@carry-on-chaos4032 через reduce вполне норм. Ну или обычным циклом.
Чаще задвигают всякую теоретическую хрень типа прототипов и принципов ооп. Как говорится, особый js для собесов, который в реальной работе никогда не используется
Принципы ООП не связаны с js и их у любого программиста могут спросить
junior еще бы поверил для первой легкой задачки на собеседовании, но точно не мидл, это уровень интерна, не более
На собесе такое не просят решать. Это детсадовские задачи.
😵😵😵 не лишайте меня мотивации.
array.reduce((acc:number, next:number) - Почему у меня аккумуляторы не работают? Все примеры из видео с аккумулятормаи у меня не пашут.
Хотя reduce вот так работает:
const array = [1, 2, 2, 4, 5, 6, 6, 100];
let sum = array.reduce(function (currentSum, currentNumber) {
return currentSum + currentNumber
} , 0)
function duplicate(nums) {
return new Set(nums.filter(n => nums.indexOf(n) !== nums.lastIndexOf(n)))
}
Крутое решение 👍
Только Big O у решения большая
Зашёл увидел старющий как мир цикл и сразу закрыл видео 🤮