Тёмный

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

Web Developer Blog
Подписаться 246 тыс.
Просмотров 46 тыс.
50% 1

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

Опубликовано:

 

12 июн 2020

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 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 в универе поучится
@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 собеседование, чаще всего, проводят с целью узнать как человек мыслит и общий уровень навыков. В нормальных компаниях не гоняют, насколько мне известно, по конкретным методам и узко специализированному функционалу без веской необходимости. Всего не запомнишь. Или я с таким не сталкивался к счастью.
@1stabatvoix
@1stabatvoix 4 года назад
Можно немного добавлю. Если вы не собираетесь в данной итерации менять содержимое переменной, то лучше использовать const, а не let. Столкнулся с этим только когда начал работать.
@GiviZurabovich
@GiviZurabovich 4 года назад
Очень круто я пересечения масивов решал чере loop где сравнивал значения... короче спс!!!!!!
@SuprunAlexey
@SuprunAlexey 4 года назад
Все гениальное - просто 😃
@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 показал, а решение не показал?
@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 удаляется, но видимо не полностью и все равно отправляется форме.
@Teqi1la
@Teqi1la Год назад
В последнем примере можно записать вот так let random_num = arr[~~(Math.random() * arr.length)]
@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. Столкнулся с этим только когда начал работать.
Далее
МОЯ НОВАЯ МАШИНА🤍КАК ВАМ?😍
01:01