Топ-12 фишек программирования на JavaScript с массивами. Ты просто обязан их знать!

  Рет қаралды 46,084

Web Developer Blog

Web Developer Blog

4 жыл бұрын

Мы продолжаем рубрику улучшение кода на JavaScript и в этом видео я покажу топ-12 фишек в програмировании JavaScript для массивов данных. Мы разберем много задач, которые вам могут попасться на собеседовании или на тестировании Junior JavaScript разработчика. Если вы начинающий JavaScript программист, то вам будет полезно ознакомиться на практике с методами массивов и решением задач с их применением. Если вы уже имели опыт с программированием javascript, то данное видео поможет вам освежить память и вспомнить как работают методы массивов.

Пікірлер: 202
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Пишите комментарии/вопросы, на все отвечаю ✌🏻✌🏻
@utopiaeh
@utopiaeh 4 жыл бұрын
Do you can create tutorial maybe for mobx and typescript it will be nice because i can't find good explication
@phantom7631
@phantom7631 4 жыл бұрын
Брат, помоги если можешь, я хочу зайти в чат рулетку пишет нет доступа к камере(сначала вообще не заходило на сайт, установил впн зашёл на сайт но выдал эту ошибку) как бороться с ней
@zhimbura
@zhimbura 4 жыл бұрын
Купи пожалуйста quokka js
@crystalcccp7829
@crystalcccp7829 4 жыл бұрын
Бро, почему это так сложно? :(
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Crystal CCCP что именно сложно?
@gifaniman6167
@gifaniman6167 3 жыл бұрын
Огромное спасибо, очень полезная информация. Успехов тебе !
@user-hf8po6si1i
@user-hf8po6si1i 4 жыл бұрын
Отличное видео. Спасибо!
@AOne1999
@AOne1999 4 жыл бұрын
Спасибо автору. Продолжай пилить годные видео🙂
@user-hc5px6de9y
@user-hc5px6de9y 4 жыл бұрын
Деструктуризация по ключу из объекта с помощью Array.from(new_car, ({car}) => car) Очень помогла мне в одной из моих задач на работе, спасибо за видео. Интересно посмотреть про интересные и полезные фишки по работе с объектами!
@user-ly7jn7bq8g
@user-ly7jn7bq8g 4 жыл бұрын
Ты мне сильно помог, спасибо!)
@tomtiurin2390
@tomtiurin2390 7 ай бұрын
Спасибо автору, супер видео!!!
@MegaPapoy
@MegaPapoy 4 жыл бұрын
хорошо было бы к следующим таким видео в описании увидеть тайм коды с примерами которые рассматриваются
@MegaPapoy
@MegaPapoy 4 жыл бұрын
да и все таки рубрика збс, это был интересный материал, добавляю себе в плейлист для шпаргалок
@user-kj6yy5wx3s
@user-kj6yy5wx3s 2 жыл бұрын
Оо, вот за fill спасибо! Не знала такого)
@user-uq7jo6tm8z
@user-uq7jo6tm8z 3 жыл бұрын
Дай бог тебе здоровья
@wijionemaster1875
@wijionemaster1875 4 жыл бұрын
Привет, хотел бы заметить, что метод reverse меняет исходный массив, а не возвращает новый. На это нужно обратить внимание.
@larisaplatova1644
@larisaplatova1644 Ай бұрын
Спасибо за это видео
@vitiok78
@vitiok78 4 жыл бұрын
Люблю смотреть подобные видео. Всегда что-то новенькое нахожу. Автору спасибо! Один совет и автору и зрителям: в этом видео можно было бы заменить почти что все операторы "let" на операторы "const". Если правильно помню, то только в одном случае в видео оператор let нужен. Приучите себя всегда использовать const, а let использовать только тогда, когда вам это действительно очень сильно нужно. Вы сэкономите себе кучу часов бессмысленного дебага в будущем, когда будете писать более сложные проекты!
@iamname8758
@iamname8758 4 жыл бұрын
Еслинт потом просканит твой код и заменит все не нужные лет на конст) В чем проблема?)
@easy749
@easy749 4 жыл бұрын
Спасибо за видео)
@artemmanzhos2681
@artemmanzhos2681 4 жыл бұрын
Спасибо за видео
@brodovoi
@brodovoi 4 жыл бұрын
Спасибо!)
@nb-cy6cw
@nb-cy6cw 4 жыл бұрын
эх, где ты был раньше) скок нервов было потрачено
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Всему своё время 😃
@Konstantah888
@Konstantah888 4 жыл бұрын
В первые раз вижу что примеры кода используются на фоне городского трафика, превосходно )) с объектами ещё фишки покажи буду признателен
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Будут с объектами в среду или четверг)
@bezbezov8867
@bezbezov8867 4 жыл бұрын
Thank you!
@sashadmitrik2035
@sashadmitrik2035 Жыл бұрын
оч полезно) знаю 7/10, но круто, спс
@winzip5861
@winzip5861 3 жыл бұрын
И вот ты решил задачу в одну строку красиво, хорошим методом. А следующий вопрос на собеседовании такой: теперь сделай тоже самое без использования методов массива, чисты js. Я так делал на нативе найти совпадения из одного массива в другом, с сохранением сколько раз получается совпадение :)
@yersinbizak3592
@yersinbizak3592 Жыл бұрын
полезно спасибо
@yryskaamanturov500
@yryskaamanturov500 4 жыл бұрын
Спасибоо!
@romanroman9638
@romanroman9638 4 жыл бұрын
отличное видео! будет ли прододжение с методами строк или обьектов? или задачки на собеседовании?
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Да, сейчас хочу сделать про фишки HTML, CSS тоже будет интересно и потом про объекты
@witaway
@witaway 4 жыл бұрын
Насчёт поиска пересечений двух массивов не согласен. Filter с вложенным include даст ужасную асимптотику O(n²). Лучше использовать структуру данных Set. Запихнуть туда весь меньший массив и искать вложения элементов из большего массива. Тогда мы получаем O(nlog2(n)), что намного лучше. Код не очень сильно усложнится, зато скорость поднимется значительно.
@witaway
@witaway 4 жыл бұрын
На самом деле, можно даже не смотреть на то, какой массив больше, а какой меньше, асимптотика останется одна и та же. Но эта оптимизация, всё-таки, должна немного помочь.
@vladimirbbq
@vladimirbbq 4 жыл бұрын
@@witaway "запихнуть в Set ... и искать вложения элементов из большего массива." так а как искать? с помощью тех же filter+includes?
@artinstitoris
@artinstitoris 4 жыл бұрын
Удивило, как ты определил асимптотику, производишь впечатление человека в теме. Возможно, подскажешь, что можно почитать/изучить на тему сложности? (Я полунулевой джун, профильного образования нет, возможно поэтому не знаю куда копать). Иногда в процессе работы понимаю "это явно быстрее", но мне это видится несерьезным, хочется хотя бы примерно прикидывать сложность того или иного решения - как в твоем комменте. Но надолго закапываться в теорию не хотелось бы, кажется, на моём этапе этот навык оценки на глаз не особо актуален)
@kivinus1575
@kivinus1575 4 жыл бұрын
@@artinstitoris одна из самых популярных книг по теме "Грокаем алгоритмы". Я читал, когда ещё неделю был знаком с программированием. Всё понятно, рассказано как считать скорость выполнения, как составлять оптимальный алгоритм и т.д.
@sergeykapshuchenko5695
@sergeykapshuchenko5695 4 жыл бұрын
@@artinstitoris в универе поучится
@1stabatvoix
@1stabatvoix 4 жыл бұрын
Можно немного добавлю. Если вы не собираетесь в данной итерации менять содержимое переменной, то лучше использовать const, а не let. Столкнулся с этим только когда начал работать.
@GiviZurabovich
@GiviZurabovich 4 жыл бұрын
Очень круто я пересечения масивов решал чере loop где сравнивал значения... короче спс!!!!!!
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Все гениальное - просто 😃
@Snovasvami
@Snovasvami 4 жыл бұрын
Насчет реверса вообще убило, на собеседовании часто интересуются как вы мыслите в таких задачках, а ты подсказываешь просто метод использовать и всё)) Вот примерчики собственной реализации reverse, а то знание метода reverse как такового не очень хороший ответ)) let reverse = [...arr1].map((item, idx, source) => source[source.length - idx - 1]); let reverse = [...arr1].reduce((acc, item, idx, source) => acc = [...acc, source[source.length - idx - 1]], []);
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Ну ну, и часто тебе на собеседованиях такое выдают? Думаю весьма редко
@Snovasvami
@Snovasvami 4 жыл бұрын
​@@SuprunAlexey собеседование, чаще всего, проводят с целью узнать как человек мыслит и общий уровень навыков. В нормальных компаниях не гоняют, насколько мне известно, по конкретным методам и узко специализированному функционалу без веской необходимости. Всего не запомнишь. Или я с таким не сталкивался к счастью.
@serhiichernyshov7172
@serhiichernyshov7172 4 жыл бұрын
спасибо
@qobilruzmatov48
@qobilruzmatov48 4 жыл бұрын
Nice
@EgorMoscowNeverSleep
@EgorMoscowNeverSleep 4 жыл бұрын
9:31 Почему arr.splice(0, arr.length) это "самый правильный способ" для очистки массива? Почитал ветку на stackoverflow посвященную этому вопросу и пришел к выводу (как я и думал раньше), что самый правильный способ это arr.length = 0;
@user-ix4qh6ke4h
@user-ix4qh6ke4h 4 жыл бұрын
согласен
@user-hz3tr9bu1h
@user-hz3tr9bu1h 4 жыл бұрын
Да, спасибо, было полезно, лайк)
@mrVandecko
@mrVandecko 4 жыл бұрын
Спасибо! Искал чтото похожее. От #6 в восторге . Запиши еще как перебирать вложенные массивы обьектов и обьекты массивов.
@vadimgoldenko6843
@vadimgoldenko6843 4 жыл бұрын
Array.reverse() на месте меняет сортировку, поэтому нет смысла создавать ещё одну переменную. Это не очевидно, но многие джуны могут много времени потратить на дебаг с вопросом: "Какого ХХХ у меня массив развёрнут?" ) developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse Возможные решения: const new_arr = [...nums].reverse(); const new_arr = nums.slice().reverse();
@EgorMoscowNeverSleep
@EgorMoscowNeverSleep 4 жыл бұрын
10:57 Очень сомневаюсь, что с таким решением задачи по нахождению пересечения массивов, человек пройдет собеседование. Я бы точно не принял такой вариант. Банально из-за производительности и невозможности масштабирования (без потери производительности). Правильный вариантом тут будет цикл по всем элементам всех массивов с сохранением значения элемента в качестве ключа во временном hash (если элементе массива это объект, то для такого кейса тоже можно придумать решение). Очень упрощенное решение: var arr1 = [1,2,3,4,5,], arr2 = [4,5,6], arr3 = [7,8,9,1]; var hash = {}, uniq = [...arr1, ...arr2, ...arr3].filter(item => { if (hash[item])return false; return (hash[item] = true); }); var hash2 = {}, dupl = [...arr1, ...arr2, ...arr3].filter(item => { return (hash2[item] = (hash2[item] || 0) + 1) > 1; }); console.log(uniq, dupl);
@JoSmith0
@JoSmith0 4 жыл бұрын
Абсолютно верный комментарий
@DmitryMagur
@DmitryMagur 3 жыл бұрын
Да и к тому же, если во втором массиве было бы две единички то и в пересечнии должно быть две. А тем что автор сначала убрал дубли он сделал пересечение неправильным в некоторых случаях.
@alexr6829
@alexr6829 4 жыл бұрын
Возможно ли видео с детальным разбором метода reduce()? уж очень сложно понять его... особенно когда дело доходит до ассоциативных массивов..
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Есть в планах
@alexr6829
@alexr6829 4 жыл бұрын
@@SuprunAlexey круто! буду ждать!
@kulchaka
@kulchaka 4 жыл бұрын
ПРобуй смотреть элементы через console.log(), так сможешь понять как работают разные методы + MDN документация developer.mozilla.org
@keksinjo
@keksinjo 4 жыл бұрын
у метода reduce 2 параметра, первый это колбэк - функция с 4-мя параметрами: аккумулятор, текущие значение массива, который перебираем, индекс, сам массив; второй параметр - начальное значение аккумулятора. arr.reduce((acc, curr, index, arr)=>{ return acc + curr }, 0) такой пример вернет сумму всех элементов вместо 0 вторым параметром можно также подставить строку или например промис
@user-ix4qh6ke4h
@user-ix4qh6ke4h 4 жыл бұрын
@@keksinjo нихуя не понял, но читал с интересом
@yersinbizak3592
@yersinbizak3592 Жыл бұрын
можете снимать такие видео на c++ и java oop
@EgorMoscowNeverSleep
@EgorMoscowNeverSleep 4 жыл бұрын
4:27 Несмотря на то, что это правильный ответ, я бы на собеседовании спросил бы ещё: а как эту задачу можно выполнить без spread-оператора? Например, с помощью того же Array#reduce (+ Object.keys), который в этом уроке показан, но как с ним работать на практике - не показано. Конкретно, не показана очень важная фича Array#reduce - в качестве аккумулятора может выступать не только примитивное значение, но и объект.
@EricSh00ter
@EricSh00ter 4 жыл бұрын
Привет. Спасибо за видео! А как собрать все объекты в массив, которые находятся в массивах массива, без for each? Есть способ?
@vitiok78
@vitiok78 4 жыл бұрын
Если правильно понял вопрос, то вам надо сделать массив плоским. Есть замечательный метод flat(). myArray.flat()
@maks7499
@maks7499 3 жыл бұрын
let prices = { orange: 10, banana: 5, total: 15 } let mod = Object.entries(prices).map(( arr) => { return [arr] }).map((arr) => { return Object.fromEntries(arr) });
@pavelharelyshau6106
@pavelharelyshau6106 10 ай бұрын
а чего картинку про: Array(10),.map((_, i) => i) // undefined показал, а решение не показал?
@Teqi1la
@Teqi1la Жыл бұрын
В последнем примере можно записать вот так let random_num = arr[~~(Math.random() * arr.length)]
@noocracio7737
@noocracio7737 4 жыл бұрын
Блин, сейчас как раз учу массивы на одном сайте и иногда всё не получается выполнять задания, которые там дают, становится стыдно из-за этого. Хотел бы узнать, это нормально или нет.
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Нормально
@user-ei5vs4sk2v
@user-ei5vs4sk2v 4 жыл бұрын
Стыдно должно быть не тому кто пытается и у него не выходит, а тому кто не пытается, а ты молодец и у тебя все получится, главное терпение и время, в начале всегда трудно, а потом будет легче
@1stabatvoix
@1stabatvoix 4 жыл бұрын
Я уже работаю фронтенд разработчиком, но у меня каждый день - это бой, постоянно что-то не получается, что-то работает не так как надо, иногда кажется, что конца и края нет поставленной задаче. Но как же круто, когда наконец получается сделать этот "каменный цветок".
@Vintelhalter
@Vintelhalter 4 жыл бұрын
5:34 Извиняюсь, я прям слишком мало знаю о js, но очень интересно знать зачем в 4 строке, перед new ставить три точки?
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Vladislav Antonov учите сначала JavaScript. Почитайте про spread оператор.
@Vintelhalter
@Vintelhalter 4 жыл бұрын
@@SuprunAlexeyПрочитал, загуглил, понял. Благодарю
@remkarablin4109
@remkarablin4109 2 жыл бұрын
@@Vintelhalter а как щас у тебя с джава скриптом ? Лучше стал понимать ? Или забил ?)
@Al_N1k
@Al_N1k 3 жыл бұрын
Кто-нибудь знает как удалить превью так чтобы она не отправлялось форме (php). Input type = file atr. Multiple . Если вдруг например передумал отправлять какой-либо из выбранных файлов. Проблема в том что Preview удаляется, но видимо не полностью и все равно отправляется форме.
@deitylamb
@deitylamb 4 жыл бұрын
Почему snake_case в js?
@klirmio21
@klirmio21 Жыл бұрын
11:36 - надо было так же указать что .reverse(), .sort() - методы массивов модифицируют основной массив! Поэтому надо создавать копию массива и на этой копии уже применять те методы
@SuprunAlexey
@SuprunAlexey Жыл бұрын
Запишите свое видео и расскажите!
@klirmio21
@klirmio21 Жыл бұрын
@@SuprunAlexey Друг, не обижайся! Я просто лишь подметил этот на мое мнение важный нюанс! А так видео топ и канал тоже! Если бы я мог так рассказывать я бы тебя не смотрел)
@tsvadim
@tsvadim 3 жыл бұрын
Все знал, все понятно.. Но три точки пред "new" что означают?
@SuprunAlexey
@SuprunAlexey 3 жыл бұрын
Пересмотрите, я вроде проговорил
@saidmalikallayarov4104
@saidmalikallayarov4104 4 жыл бұрын
1) Метод reduce - почему пишется в 1 одну строчку? Не лучше ли для читабельности создать переменную reducer = (a,b) => a+b ? В чем разница ? И как узнать в VScode за сколько миллисекунд выполняется задача ?
@vty4261
@vty4261 4 жыл бұрын
Если я правильно понял последний вопрос, то установите расширение code runner
@slovaripro
@slovaripro 4 жыл бұрын
9:30 Чем метод splice правильней присваивания пустого массива? При работе с крупным массивом ответ от splice занимает от 2-3мс и выше,когда же присваивание пустого массива 0.
@TheProfessionalGambler
@TheProfessionalGambler 4 жыл бұрын
Часто массивы объявляют через *const* , присваивание в этом случае не сработает. А arr.length = 0 и arr.splice сработают, но вариант со splice редко встречается.
@slovaripro
@slovaripro 4 жыл бұрын
@@TheProfessionalGambler Да,конечно, в таком случае работа с прототипами будет работать,но все равно. splice по производительности, проигрывает в этом случае. splice конечно универсальный и удобный метод, знать его надо и показывать как топ фишка стоит,но не в данном примере..
@russellray1219
@russellray1219 4 жыл бұрын
@@TheProfessionalGambler что мешает объявить переменную через let?
@TheProfessionalGambler
@TheProfessionalGambler 4 жыл бұрын
@@russellray1219 потому что нужна константа, чтобы сразу были видны ошибки
@russellray1219
@russellray1219 4 жыл бұрын
@@TheProfessionalGambler константа не поможет видеть ошибки. вам нужен тайпскрипт для этой цели, он покажет где потенциальные ошибки и не даст их совершить. 10 лет назад люди писали var и как то жили с этим ;)
@alexr6829
@alexr6829 4 жыл бұрын
В варианте очистки массива путём присваивания пустого массива будет работать если в коде больше нету переменных ссылающихся на исходный массив... допустим есть некоторая переменная let arrayOfNums = nums; после присвоения перменной nums пустого массива привязку arrayOfNums мы не очищаем... В реальности такой метод, с высокой вероятностью, приведёт к ошибке в логике..
@vitiok78
@vitiok78 4 жыл бұрын
Именно поэтому надо всегда использовать const вместо let, если действительно не нужно переназначать массив. И тогда эту ошибку программер словит гораздо раньше и без многочасовой боли дебага ))) Ведь он просто не сможет переназначить массив таким образом
@andaleangel9510
@andaleangel9510 4 жыл бұрын
Ты просто Супер)))
@igornikonov9641
@igornikonov9641 4 жыл бұрын
А зачем было использовать Spread operator вместе с сэтом для того, чтобы получить эррэй с уникальными значениями? Я сделал так: const newArr = [new Set(oldArr)], не используя спрэд, и мне выдало тот-же эррэй с уникальными значениями.
@olezhonnv3215
@olezhonnv3215 4 жыл бұрын
А зачем в примере, где выводим рандомный элемент масива, нужны скобки вокруг nums2.length? Да и вокруг Math.floor(...) - тоже скобки не нужны вроде. Или нужны? А зачем?
@olezhonnv3215
@olezhonnv3215 4 жыл бұрын
Math.floor даёт целое число. Зачем там лишние скобки? Оно без скобок индексом не сможет быть?
@xiomiredmi2663
@xiomiredmi2663 3 жыл бұрын
Здравствуйте Пересечение двух массива был чуть чуть не попятен
@windcrack8404
@windcrack8404 4 жыл бұрын
Возможно, сделать видео по классам в JS ?
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Да
@gensec1988
@gensec1988 4 жыл бұрын
Два последних приёма были показаны в предыдущем видео.
@user-hz3tr9bu1h
@user-hz3tr9bu1h 4 жыл бұрын
Как я понял, трудно найти вакансию js, почти всегда требуется ещё и хорошо вёрстку знать
@user-sr5ts2jz7e
@user-sr5ts2jz7e 4 жыл бұрын
Нода, РН в помощь, да и в целом верстки мало сейчас, дешевле нанять верстальщика
@user-nn6mb9tv1b
@user-nn6mb9tv1b 4 жыл бұрын
чо там знать то
@user-hz3tr9bu1h
@user-hz3tr9bu1h 4 жыл бұрын
@@user-nn6mb9tv1b в вёрстке? Ну вот нравится js, и ориентируешся для работы в в вёрстке, чтобы цеплять ее на js,а тебя ещё и верстать заставляют, сидишь верстаешь половину времени вместо любимого js
@aammssaamm
@aammssaamm 3 жыл бұрын
@@user-hz3tr9bu1h так ориентируйтесь на фуллстэк, чтобы не заставляли.
@user-xt3oh8us4e
@user-xt3oh8us4e 4 жыл бұрын
Почему в reduce не указал значение по умолчанию ‘’’arr.reduce((acc, cur) => acc + cur, 0)’’’
@sergei-sabitov
@sergei-sabitov 3 жыл бұрын
Если значение по умолчанию не указано, им будет первый элемент массива
@user-dg1rm5xp1o
@user-dg1rm5xp1o 4 жыл бұрын
Очень помогает. 🐕🐕🐕🐕🐕🐕🐕🐕🐕
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Я рад 😌
@bratexe
@bratexe 4 жыл бұрын
Чтобы очистить массив ты применяешь 2 функции, просто поставить [] куда лучше
@onebizzy8787
@onebizzy8787 Жыл бұрын
Можно nums.splice(0) раз уж на то пошло. Без второго параметра и так удалит все до конца.
@darkjudic
@darkjudic 4 жыл бұрын
fill, reverse и random уже были в прошлом уроке, чтобы этого не происходило можно добавлять в описание список фишек
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Все норм, не все смотрят каждое видео))
@acidentd9722
@acidentd9722 3 жыл бұрын
5 копеек : раз уж про собеседования, falsy значения явно кастуются в примере#2 к Boolean, но console.log(undefined&&true) // undefined
@SuprunAlexey
@SuprunAlexey 3 жыл бұрын
Что про собеседования
@acidentd9722
@acidentd9722 3 жыл бұрын
​ @Web Developer Blog ​ @Web Developer Blog в видео говориться, что эта информация может быть полезна при собеседовании
@quiet2844
@quiet2844 4 жыл бұрын
Я 2
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
красава
@belyi_chel
@belyi_chel 7 ай бұрын
splice не очищает Boolean
@OlegAntipov
@OlegAntipov 4 жыл бұрын
Создание массива уникальных элементов через new Set очень индусским кодом отдаёт )
@user-nn6mb9tv1b
@user-nn6mb9tv1b 4 жыл бұрын
а ты руки помой и отдавать не будет
@user-gs5xp8yp5k
@user-gs5xp8yp5k 4 жыл бұрын
А как лучше?
@user-if9sb2fn4f
@user-if9sb2fn4f 4 жыл бұрын
forEach
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Есть такое
@alekseysverbeev2934
@alekseysverbeev2934 4 жыл бұрын
reduce не стоит делать без дефолтного значения, иначе пустой массив уронит этот код
@humanengine2385
@humanengine2385 2 жыл бұрын
Что значит дефолтного? Я новичок. Массив не должен быть пустым для этой функции?
@alekseysverbeev2934
@alekseysverbeev2934 2 жыл бұрын
@@humanengine2385 дефолтный = по умолчанию. В reduce можно передать второй параметр - его вернёт функция, если входящий массив пустой. Если второго параметра нет, упадёт ошибка при пустом массиве.
@rock_N_ro11a
@rock_N_ro11a 4 жыл бұрын
Следующие методы обьектов ?)
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Да
@rock_N_ro11a
@rock_N_ro11a 4 жыл бұрын
@@SuprunAlexey круто👍 коротко и все по делу , годнота
@nitkin2z
@nitkin2z 4 жыл бұрын
А как удалить истинные значения, из массива? 2:57
@vladvorobei5315
@vladvorobei5315 4 жыл бұрын
const arr = [false, "red", 0, 2, true,"", null, NaN, undefined] const onlyTrue = arr.filter(some => !some)
@davidmakinyan6672
@davidmakinyan6672 4 жыл бұрын
Сделай пожалуйста про electron.js
@eXacT9090
@eXacT9090 4 жыл бұрын
Привет, а как написать функцию в консоль, чтоб к примеру на почте gmail удалить каждое второе сообщение?
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Ни разу таким не занимался
@user-mn2po8ns2z
@user-mn2po8ns2z 2 жыл бұрын
Если у меня есть три объекта, у каждого объекта есть св-ва age, я хочу просуммировать их общий возраст, я иду по массиву методом reduce и в return пишу return acc.age + next.age, получаю Nan, потому что age записан как строка, как мне преобразовать age в number? в итоге я перед этим прошёл по массиву методом map и преобразовал age в int, но это ш маразам, я б и циклом быстрее сделал, кто знает почему я лох?)
@Furamy
@Furamy 3 жыл бұрын
let sum = eval(nums.join('+'))
@SuprunAlexey
@SuprunAlexey 3 жыл бұрын
Неплохо
@Dai_Fudo-Dev
@Dai_Fudo-Dev 4 жыл бұрын
Так где 1080p?
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Редактор видео глючит 😩😩
@alexkhalamsky3715
@alexkhalamsky3715 4 жыл бұрын
What is your site's url, pls?
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Какой сайт
@alexkhalamsky3715
@alexkhalamsky3715 4 жыл бұрын
@@SuprunAlexey the one with the lessons you ve been reffering to in this video
@user-qi9vx4mj4n
@user-qi9vx4mj4n 3 жыл бұрын
nums.reduce((acc, cur) => acc + cur, 0)
@SuprunAlexey
@SuprunAlexey 3 жыл бұрын
+
@andreygokhan6893
@andreygokhan6893 4 жыл бұрын
3:31 "и в скобках мы пишем по какому значению. В нашем случае рассматриваем только булевы значения." А как метод filter узнал, что из булевых нам нужны только "верные" значения? Магия однако)) Я знаю как это работает, поэтому объяснять мне ничего не надо. Знают ли новички и знает ли сам автор? Ведь он просто в скобках просит: "пожалуйста по булевому значению". И вуаля. Вообще-то filter сам преобразует айтем в булево значение и использует его.
@russellray1219
@russellray1219 4 жыл бұрын
согласен, с вами и хочу дополнить. у методов массивов зачастую больше одного параметра в функции handler, поэтому более правильно юзать их через стрелочную функцию list.filter((item) => Boolean(item))
@russellray1219
@russellray1219 4 жыл бұрын
а еще вот такой код будет выдавать не то что вы ожидаете [1.3, 2.6, 1.7].map(parseInt) // хотим список int // => [1, NaN, 1]
@russellray1219
@russellray1219 4 жыл бұрын
это все не вам, а новичкам кто будет читать ваш коммент)
@user-qe9zw4yj1n
@user-qe9zw4yj1n 4 жыл бұрын
а зачем выводить в консоль, если данные выводятся в сообщениях, то ни лучше ли выводить в пользовательских сообщениях, таких как alert, innerHTML, document.getElementById или document.write? или консоли нужны для тестирования?
@russellray1219
@russellray1219 4 жыл бұрын
в консоли можно получить больше инфы о том, что выводишь, да и порядок исполнения кода можно отследить, можно выводить не только логи но и стек-трейсы, можно прыгать в место объявления функции в дебагере браузера, если в консоль вывести функцию в общем, без консоли никуда
@poperechniy
@poperechniy 4 жыл бұрын
А почему на превьюхе связной список?
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Картинка просто подходящая
@aammssaamm
@aammssaamm 3 жыл бұрын
Связной - это у партизан, а список - связанный. Вам бы с русского начать.
@poperechniy
@poperechniy 3 жыл бұрын
@@aammssaamm это комментарий ради комментария?
@aammssaamm
@aammssaamm 3 жыл бұрын
@@poperechniy, чтобы показать вашу безграмотность как в программировании, так и в русском языке.
@poperechniy
@poperechniy 3 жыл бұрын
@@aammssaamm если хотел показать мою неграмотность в русском и программировании, нужно было сначала хотя бы проверить свои аргументы на прочность. Зайди в гугл и посмотри какой бывает список, связанный или связный.
@vitaliyirtlach
@vitaliyirtlach 4 жыл бұрын
let sum = arr.reduce((total, current) => total + current);
@TheDantrio
@TheDantrio 4 жыл бұрын
1) Первое задание предпочитаю на практике решать таким способом: let sum = 0; arr.map(x => sum += x);
@russellray1219
@russellray1219 4 жыл бұрын
map возвращает новый массив, что требует чуть больше памяти чем reduce. в большинстве случаев это не важно, но при разработке специфических или огромных приложений это уже играет роль.
@drl232
@drl232 4 жыл бұрын
Массив это тоже объект
@russellray1219
@russellray1219 4 жыл бұрын
в js все объект false.constructor.__proto__.__proto__.constructor.name // "Object" (0).constructor.__proto__.__proto__.constructor.name // "Object" и т.д.
@user-su9kl7ol5m
@user-su9kl7ol5m 4 жыл бұрын
не забивайте людям могли говно-кодом, тестируйте пожалуйста эффективность своего кода, когда советуете. const arr = new Array(1000000).fill(Math.floor(1 + Math.random() * 1000)); let test=[]; let count=100000; let times = []; let startDate, endDate = 0; console.time('F1.length'); startDate= new Date().getTime(); for(i=0; i
@nexgenua
@nexgenua 4 жыл бұрын
На первьюхе односвязный список, а не массив
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Нашли к чему придраться 😃
@demchenkodmytro1403
@demchenkodmytro1403 4 жыл бұрын
Фильтрация булевых значений - у вас ошибка, так как значение "red" является строкой, и 2 - это Number.
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Нет ошибки
@demchenkodmytro1403
@demchenkodmytro1403 4 жыл бұрын
@@SuprunAlexey Отличный ответ )
@user-gs5xp8yp5k
@user-gs5xp8yp5k 4 жыл бұрын
@@demchenkodmytro1403 строка и число это true
@demchenkodmytro1403
@demchenkodmytro1403 4 жыл бұрын
@@user-gs5xp8yp5k строка и число - это идите спать )
@megasaab2915
@megasaab2915 4 жыл бұрын
nums.reduce((a , b) => a + b)
@RandelVideo
@RandelVideo 4 жыл бұрын
Понятно только тем, кто и так в теме. Минин намого лучше это рассказывает.
@user-nn6mb9tv1b
@user-nn6mb9tv1b 4 жыл бұрын
Минин вообще не умеет рассказывать - от слова совсем
@shemetovvitaly5482
@shemetovvitaly5482 4 жыл бұрын
@@user-nn6mb9tv1b тебе походу к айтикамасутра , который повторяет все по десять раз..
@aammssaamm
@aammssaamm 3 жыл бұрын
@@shemetovvitaly5482 тот даже сам до сих пор не понял, вот и повторяет в надежде когда-либо понять.
@igorbond2823
@igorbond2823 4 жыл бұрын
Про reduce нужно подробнее рассказывать - он на первый взгляд кажется тупым и бесполезным.
@russellray1219
@russellray1219 4 жыл бұрын
да, это самый мощный метод массивов, тема reduce не раскрыта
@arthurcode4225
@arthurcode4225 4 жыл бұрын
Серьезно такие вопросы на собесах?Пффффф, слишком легко
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Бывают и такие, я ж не сказал что только исключительно эти
@russellray1219
@russellray1219 4 жыл бұрын
обычно спрашивают рекурсию, замыкания и понимание асинхронного исполнения кода ;)
@1stabatvoix
@1stabatvoix 4 жыл бұрын
Можно немного добавлю. Если вы не собираетесь в данной итерации менять содержимое переменной, то лучше использовать const, а не let. Столкнулся с этим только когда начал работать.
Watermelon Cat?! 🙀 #cat #cute #kitten
00:56
Stocat
Рет қаралды 21 МЛН
WHY THROW CHIPS IN THE TRASH?🤪
00:18
JULI_PROETO
Рет қаралды 8 МЛН
Замыкания, просто и с примерами. Функции JavaScript
39:25
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 44 М.
Почему все тупят на массивах - ошибки учителя
12:53
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 28 М.
Уроки Blender с нуля / #3 - Трансформация и добавление объектов
24:11
Школа itProger / Программирование
Рет қаралды 62 М.