Урок 13. JavaScript. Все о Map, Set, WeakMap, WeakSet с примерами

  Рет қаралды 150,721

Владилен Минин

Владилен Минин

4 жыл бұрын

Получить профессию Frontend разработчика -
bit.ly/3OEXwnG
Подробнее узнать об обучении в Result School -
bit.ly/3y1ysQJ
Бесплатный курс HTML & CSS - bit.ly/3OqMvqj
Сделать 5 проектов на JavaScript - bit.ly/3bxl930
Я в соц сетях:
Telegram: t.me/js_by_vladilen
VK: vladilen.minin
Instagram: / vladilen.minin
Мои паблики по JavaScript:
Telegram: t.me/result_school_it
VK: result.school
Instagram: / result.scho. .
JavaScript cообщества:
Discord: / discord
Telegram: t.me/js_by_vladilen_chat
Roadmap по каналу:
vladilen.notion.site/Roadmap-...
Урок 13. JavaScript. Все о Map, Set, WeakMap, WeakSet с примерами
Сложный JavaScript простым языком:
• Урок 1. JavaScript. Чт...

Пікірлер: 214
@VladilenMinin
@VladilenMinin 4 жыл бұрын
Полезен контент по чистому JS?
@Cobr3nn
@Cobr3nn 4 жыл бұрын
да огонь) на практике правильно крайне редко юзаю это) может пора исправлятся
@promax866
@promax866 4 жыл бұрын
Да!!! Спасибо за видос!
@eugenenovikov671
@eugenenovikov671 4 жыл бұрын
на собеседованиях всегда спрашивают сначала чистый JS
@user-ip2vy7zd6o
@user-ip2vy7zd6o 4 жыл бұрын
Более чем!
@johnd1431
@johnd1431 4 жыл бұрын
Еще как!
@razumizm
@razumizm 4 жыл бұрын
Влад, позволю себе указать на неточность в уроке. Когда ты сравниваешь Map и WeakMap, то проверяешь наличие обнуленных объектов (obj = null) внутри Map и WeakMap через методы get и has. Но в случаях обоих объектов эти методы будут одинаково возвращать undefind и false, соответственно. Тут нет никакой разницы, ведь мы одинакого перестаем получать доступ к ключу-объекту, так как удалили ссылку на него. Для демонстрации разницы нужно было показывать содержимое самих объектов. В случае с Map ключ-объект будет оставаться внутри объекта Map, тем самым занимая память мертвым грузом, а в случае с WeakMap ключ-объект будет пропадать из [[Entries]], освобождая память от мусора. Это, на мой взгляд, наглядно бы показало разницу. Нюанс в том, что исчезать из WeakMap объекта обнуленный ключ-объект будет не сразу. Мне пришлось много раз обновить браузер, чтобы увидеть очищенный WeakMap объект. Об этой особенности ты тоже говоришь, что время, за которое будет удален скам не определено, поэтому отсутствует метод size. И обновление браузера это наглядно показало. Благодарю за твою работу и желаю и дальше делать упор на качество, не поддаваясь соблазну удариться в инфоциганство, которым и так завален ютьюб. Лучше меньше, да лучше. ИМХО. В этом заключается уникальность в современных реалиях.
@aboba86468
@aboba86468 3 жыл бұрын
Мне кажется, у вас тоже неточность: "В случае с Map ключ-объект будет оставаться.." здесь уже не ключ-объект остаётся, а его значение, ведь вы же сами написали "мы одинаково перестаем получать доступ к ключу-объекту, так как удалили ссылку на него". Ну и то же самое с WeakMap.
@vadmanx8173
@vadmanx8173 3 жыл бұрын
Неточность в том, что Влад пытается получить значение для удаленного объекта из WeakMap используя значение null, т.к. именно null он записал в переменную, хранившую ссылку на удаленный объект, а по значению null конечно WeakMap ничего не выдаст, т.к. null не валидный ключ для WeakMap. (к слову с Map такое сделать можно, записав какое-то другое значение по ключу null и в этом случае мы и получим это другое значение). WeakMap не имеет методов size, entries и keys, так что проверить, что удаленый объект действительно был удален из WeakMap не получится. Похожая ошибка и с WeakSet структурой. Влад удаляет второй элемент из массива, при этом место второго элемента занимает третий элемент. Следовательно, после удаления второго элемента Влад пытается проверить наличие значения третьего элемента из массива, которого там конечно нет, т.к. он его туда не добавлял.
@user-ee6ft7ye7i
@user-ee6ft7ye7i 3 жыл бұрын
Тоже обратил на это внимание и считаю, что лучше было продемонстрировать содержимое карт. Но мне интереснее было в каком виде в Map остается элемент с обнуленным ключем-обьектом. Нужно понимать последствия этого и как подстраховаться при необходимости использования таких карт со смешанными ключами.
@ArtiomNeganov
@ArtiomNeganov 2 жыл бұрын
Ребят, вы такие классные, любите сочинения писать. Нет чтобы ссылку на sandbox разместить. Или если ссылки режутся, то просто кусок кода. Но за наблюдение спасибо, я бы пропустил. Это реально ошибка, а не неточность, не знаю чего тут расшаркиваться. И что-то не наблюдаю автора, посыпающего голову пеплом :)
@andriy1229
@andriy1229 3 жыл бұрын
Влад, огромная благодарность за урок!
@userman6193
@userman6193 Жыл бұрын
Спасибо. Фактически у вас, Владилен, уникальный контент по JS, за это отдельное спасибо. Успехов во всём).
@Civilizer1976
@Civilizer1976 3 жыл бұрын
Отлично, идём дальше. "дорогу осилит идущий".
@kazikhangereykhanov4781
@kazikhangereykhanov4781 4 жыл бұрын
Нравится что ты не опускаешь детали и говоришь подробно как в книжке. Привет из Дагестана)))
@user-sj3qt7wu9c
@user-sj3qt7wu9c Жыл бұрын
c какого города?
@404Negative
@404Negative Ай бұрын
@@user-sj3qt7wu9c Нижние Дагестаны
@user-eo4rp8fd8n
@user-eo4rp8fd8n 4 жыл бұрын
Владилен, привет. Отличный урок , спасибо.
@user-kq1ei8wk4c
@user-kq1ei8wk4c 4 жыл бұрын
Хорошо, что в видеороликах нет фоновой музыки, реально бесит
@KomAlexei
@KomAlexei 2 жыл бұрын
Спасибо! Как всегда очень доступно и полезно!
@pavelzakharov4752
@pavelzakharov4752 4 жыл бұрын
Изучаю сейчас JS по сайту-учебнику. Читал эти map и set - нихера не мог понять. Очень поверхностно дано без углубления. Нашел твой блог, посмотрел. Вернулся к учебнику, ибо там практические полезные задания и продолжил читать - после твоего видео сразу всё стало понятно! Дружище, ты крут. Очень хорошая подача с качественным объяснением. Спасибо!!! Лучи добра тебе в карму.
@MrJustice
@MrJustice 4 жыл бұрын
А можешь сказать, пожалуйста как учебник называется?
@MrJustice
@MrJustice 4 жыл бұрын
@@pavelzakharov4752 спасибо!
@elmaga4486
@elmaga4486 4 жыл бұрын
@@pavelzakharov4752 как успехи? просто я сам учу js на этом сайте
@elmaga4486
@elmaga4486 4 жыл бұрын
@@MrJustice друг ты на какой теме? может вместе попробуем объясняя друг другу
@pavelzakharov4752
@pavelzakharov4752 4 жыл бұрын
@@elmaga4486 нормально. Я уже реакт заканчиваю, пилю всякие мелкие приложухи для портфолио, ищу джунскую работу. Надо хуки да редакс сейчас освоить
@user-cx4ih7wv6i
@user-cx4ih7wv6i 4 жыл бұрын
Дай Бог тебе здоровья.
@afterseks
@afterseks 4 жыл бұрын
ты топ! делай чаще )) спасибо большое !
@artempaskal7986
@artempaskal7986 2 жыл бұрын
Дай тебе Бог здоровья!!!
@dinmukhamedamirov2704
@dinmukhamedamirov2704 9 ай бұрын
Благодарю! Объяснено просто и понятно.
@romanmed9035
@romanmed9035 3 жыл бұрын
программеров хороших немало. но так чтобы смог понятно рассказать единицы. и автор к радости тех кто смотрит это видео таковым как раз является. что дает возможность еще большему числу людей постигнуть программирование и яваскрипт в частности.
@danilkochnev8162
@danilkochnev8162 4 жыл бұрын
Отличные уроки!
@AsVit
@AsVit 4 жыл бұрын
Фух.. Урок пройден) Спасибо большое!
@lockd0wnll178
@lockd0wnll178 4 жыл бұрын
Лучший урок по этой теме на ютубе. Спасибо
@nursaidnursaid7303
@nursaidnursaid7303 4 жыл бұрын
Спасибо за уроки
@deuriy
@deuriy 4 жыл бұрын
Надо же ) А я как раз сегодня эту тему изучал ) Но за урок спасибо.👍
@temeralin.t
@temeralin.t 4 жыл бұрын
Владилен лучший!
@nikolaikharkevich4736
@nikolaikharkevich4736 5 ай бұрын
Спасибо за урок!)
@RewCSharp
@RewCSharp 5 ай бұрын
Спасибо за урок!
@teymurtarasov9014
@teymurtarasov9014 3 жыл бұрын
Очень годно. Спасибо
@doomymax577
@doomymax577 4 жыл бұрын
Как всегда полезно, сделай урок по дебагу JS
@filcondrat
@filcondrat 4 жыл бұрын
отличный урок интересно было бы увидеть что нибудь по xss либо по jwt
@asylzhanb2325
@asylzhanb2325 4 жыл бұрын
Жду экскурсию про next.js, на мой взгляд было бы интересно, а так с меня лайк, жаль нельзя лайкануть 10 раз))
@SlavaCh
@SlavaCh 4 жыл бұрын
Почему же, сделайте 10 аккаунтов и лайкайте на здоровье, было бы желание 😉
@s.konstantin
@s.konstantin 4 жыл бұрын
Спасибо за разъяснение
@sergeyplotnikov5031
@sergeyplotnikov5031 Жыл бұрын
Очень классный пример с кэшированием пользователей
@dfdf6381
@dfdf6381 3 жыл бұрын
Огромное спасибо. Не как не мог понять тему, много где смотрел искал а тут сразу все ясно и понятно. Спасибо огромное.
@aitbayseiduldayev2363
@aitbayseiduldayev2363 4 жыл бұрын
Ассаляму Алейкум ! Давно не встречал такой хороший контент. Коротко и ясно. Спасибо большое. Сейчас начал разрабатывать сервисы на Node JS + Postgres Sql для мобильных приложении. Говорят Potgres Sql самый стабильный движок для BigData. Но пока чайник в этом деле. Буду очень благодарен, если сделаешь пару тройку уроков по данной теме. Еще раз спасибо.
@vladimirww5152
@vladimirww5152 3 жыл бұрын
Полезно!
@serhiip5206
@serhiip5206 Жыл бұрын
set упрощает жизнь на порядок в плане перебора и сравнения
@maximminchenko7633
@maximminchenko7633 4 жыл бұрын
Number.MAX_SAFE_INTEGER раз спасибо тебе за твой труд Владилен!
@karlenkm4230
@karlenkm4230 4 жыл бұрын
spasiba!!! vsyo maximalna panyatna
@karfagen86
@karfagen86 4 жыл бұрын
Я все время думал, что я хорошо разбираюсь в js, но по видео стало понятно, что есть еще чему поучиться! Спасибо Владилен )
@nikita_kabuu
@nikita_kabuu Жыл бұрын
Спасибо большое
@Stan9326
@Stan9326 4 жыл бұрын
Спасибо!
@yakut54
@yakut54 4 жыл бұрын
Заранее лайк )
@Max-kr4ie
@Max-kr4ie 4 жыл бұрын
Спасибо. Все очень хорошо и глубоко раскрыто, примеров бы побольше в проекте бы пусть и небольшом
@VladilenMinin
@VladilenMinin 4 жыл бұрын
Будет практика позже)
@rinatvaliullov3247
@rinatvaliullov3247 4 жыл бұрын
Как всегда очень информативно и без теоретической нудятины. Спасибо за урок, Владилен. Единственное, что хотелось бы видеть больше - это больше примеров.
@user-xt2pj7rb9e
@user-xt2pj7rb9e 4 жыл бұрын
Сделай видео по шаблонам проектирования, которые используются в разработке на node js или express или koa
@OinkieP1e
@OinkieP1e 5 ай бұрын
Я заметил что между прошлой частью и этой у Владилена произошел день рождения)
@alexvladi4157
@alexvladi4157 4 жыл бұрын
было бы шикарно сделать плейлист полностью по всем темам JS и с большим количеством примеров, почему то большинство авторов делает видео для новичков, потом для продвинутых, а потом разбирают фреймворки, без последовательности (
@artemijeka
@artemijeka 2 жыл бұрын
спасибо
@MAKSIMTSA
@MAKSIMTSA 2 жыл бұрын
Хороший ролик! Только структуры WeakMap и WeakSet называются слабыми, потому что ссылки на объекты-ключи хранятся «слабо», что означает то, что они не предотвратят сборку мусора в том случае, если других ссылок на объект не будет.
@dankledanke
@dankledanke 2 жыл бұрын
спасибо!
@gravitation-ether242
@gravitation-ether242 2 жыл бұрын
всегда читаю литературу все вроде ясно и понятно но повторение информации в твоем воспроизведении меняет восприятие и понимание темы все просто рахмет
@hi-tech4143
@hi-tech4143 3 жыл бұрын
Владилен, да ну неправду Вы говорите. Если сделать obj = null, то в WeakMap останется { name: "weakmap" } → "obj data" и на память это никак не повлияет. Ваше утверждение примером, что если проверить по console.log(map.has(obj)) всегда будет false, потому что map.has(null) кроме false никогда ничего другого и не вернет (( Тоже самое с примерами lena = null, достаточно сделать console.log(cashe) и убедится, что все на своих местах ))
@user-bh2ge1mu9x
@user-bh2ge1mu9x 9 ай бұрын
Очень классно спасибо! Единственно, были досадные ошибки в конце, когда отсутствие элементов в weakmap, weakset объясняется через .has() == false от новых ключей null и от users[1] - Irina, Я выводил в консоль weakmap до и после obj = null он в обоих показывал только один элемент, что странно (было же 2 в начале). добавил задержки через циклы до 1000, стал показывать всегда оба. Приходится только верить что GC действительно их чистит :)
@Denis-db4yn
@Denis-db4yn 4 жыл бұрын
Спасибо! Не мог бы ты сделать урок по работе GIT в WebStorm? :)
@shutterradio
@shutterradio 3 жыл бұрын
Спсибо, теперь еще меньше белых пятен в понимании js
@user-ik8rn3lp7u
@user-ik8rn3lp7u 2 ай бұрын
Я только сейчас узнал что назначение переменной значения null не ведёт к разрыву связи с объектом. А чтобы полностью разорвать связь с объектом нужно присваивать undefined вместо null, только в этом случае консоль выведет undefined, что означает что объект был удалён из памяти.
@Civilizer1976
@Civilizer1976 3 жыл бұрын
На 15:15 для правильного отображения вывода: console.log(key, val)
@pitermelnyk619
@pitermelnyk619 4 жыл бұрын
желательно было бы сделать по NodeJS не как сервер, а как простая консольная монолитная программа, с использованием Mysql и минимум всяких сторонних модулей, и как очень желательный бонус будет то чтоб рассказать о то как запускать дочерние процессы, как с ними общаться так как есть как минимум 4 варианта запуска, а вот процесс "общение" очень слабо освещено в материалах. Успехов твоему каналу! Тут наверное каждому будет что-то себе почерпнуть, так как "копаешь" не слабо а подаешь материал с лёгкостью !)
@Civilizer1976
@Civilizer1976 3 жыл бұрын
Для автоматической перезагрузки терминала в VSCode используйте nodemon
@ArturKRG
@ArturKRG 3 жыл бұрын
У меня почему-то он не работает. После первой же перезагрузки страницы в бразуере крашится
@user-mk1te5wp3f
@user-mk1te5wp3f 2 жыл бұрын
Владилен, спасибо за информацию. Единственное WeakMap отслеживает свои объекты-ключи на изменение и полей объекта, так и ссылки на объект, а WeakSet следит только за ссылками и изменение полей объекта-ключа допускаются.
@user-ss7bm2id5c
@user-ss7bm2id5c 2 жыл бұрын
когда задал константу map как объект класса Map, в консоле появилась ошибка "Uncaught TypeError: Iterator value undefined is not an entry object at new Map ()". Подскажите пожалуйста, в чем может быть проблема?
@Peter-vz4tb
@Peter-vz4tb 4 жыл бұрын
В свое время купил курс автора по NUXT.js и все бы хорошо но столкнулся проблемой с деплоем приложения на VPS. Начал разбираться в теме а там гиблый лес: nginx, pm2 и другие радости. Я конечно понимаю что есть проффесия DevOps но если такого спеца по рукой нет а доделать надо (клиенту не объяснишь что не можешь)? Хотелось бы увидеть курс по деплою node.js приложения. Можно даже платный, можно даже не полный, но чтобы работало. Заране благодарен. P.S. Я задеплоил с помощью npm run generate но это скорее костыль чем решение.
@MaxKievSky
@MaxKievSky 3 жыл бұрын
В каких случая ключом может быть объект с другими ключами и значениями в обьекте "new Map" и для чего это нужно из опыта?
@razumizm
@razumizm 4 жыл бұрын
Таким образом, чтобы создать Map из обычного объекта (прототип которого не содержит Symbol.iterator), нужно сначала объект превратить в массив, с помощью Object.entries(obj), а уже потом new Map(arrObj)? Правильно ли я понял? Благодарю за отличный урок.
@user-QesOrwuMqN
@user-QesOrwuMqN 3 жыл бұрын
Скорее всего Set отнаследован от Map внутри, я бы так по крайней мере реализовывал, только в качестве ключа нужно использовать значение
@daniilrozhok336
@daniilrozhok336 4 жыл бұрын
ответь пожалуйста) в описании под видео список курсов по Angular 8+, ReactJS, NuxtJS + NodeJS, вопрос: эти курсы от тебя(т.е если я куплю курс я буду слышать тот же голос и это будешь ты)?
@VladilenMinin
@VladilenMinin 4 жыл бұрын
Конечно мои)
@user-cl4qx9wn1i
@user-cl4qx9wn1i 4 жыл бұрын
Очень нравится ваша манера подачи материала. Достаточно информативно, и без лишний воды. Видел есть видео 40 вопросов по ангуляру, не думала сделать аналоничное видел по React ?
@VladilenMinin
@VladilenMinin 4 жыл бұрын
Есть на канале
@AlinaLozyuk
@AlinaLozyuk 10 күн бұрын
WeakMap называется weak не потому что у него урезанная функциональность, а потому что WeakMap работает со слабыми ссылками. Сильная ссылка - ссылка которая, не дает gc удалить какой-то объект, если на него есть хоть 1 сильная ссылка. Слабая ссылка, напротив, позволяет указывать на объект, не предотвращая его автоматическое освобождение сборщиком мусора.
@user-bi4vn3bs3l
@user-bi4vn3bs3l 4 жыл бұрын
Я не уверен, что при использовании weakmap память очищается после удаления его элементов. Weakmap не отображает удаленные элементы в пределах своей видимости, а не в пределах области всей памяти. Надо попробовать дважды законстантить один из его элементов и посмотреть что будет с константами после очищения weakmap. Думаю, одна ссылка все же останется на обьекте. Наверно лучше применять область видимости, чтобы JS сам подчищал память без всякого обнуления. Поставить фигурные скобки на части кода, и JS поймет где и что почистить.
@vemirxachatryan8371
@vemirxachatryan8371 3 жыл бұрын
Привет, спасибо за урок, а почему когда я запускаю код в браузере то в console.log()- е у WeakMap не проподает ключ ( обьект который null ) а когда запускаю код в терминале с помощю node-js тогда проподает
@user-bx7ly2th3b
@user-bx7ly2th3b 4 жыл бұрын
досмотрел до 31й минуты пока что (смотрю медленно, через паузы, все разбираю сам, пишу свой код, проверяю) ... не понмаю какой смысл делать объект ключем? может быть расскажете, каким образом это используется в реалности? Почему те же timestamp'ы не добавить в исходный объект/массив, как array['timestamp'] = Date.now();?
@fafad2130
@fafad2130 4 жыл бұрын
Владилен, а в ближайшее время вы планируете создание фреймворка или нет?
@VladilenMinin
@VladilenMinin 4 жыл бұрын
Да, планирую создание чего-то крутого на чистом языке. Возможно сразу на ФП
@DRanduletti
@DRanduletti 3 жыл бұрын
было бы круто выложить исходники на github.
@cyclopentanpergidrophenantren
@cyclopentanpergidrophenantren 4 жыл бұрын
Смотрел видео, вспоминал Python 3. Думал все методы с него взяли от Set. Но к сожалению не хватает set.update(other, ...); - объединение, set.intersection_update(other, ...); - пересечение, • set.difference_update(other, ...) - вычитание, set.symmetric_difference_update(other); - множество из элементов, встречающихся в одном множестве, но не встречающиеся в обоих. Это надо было сделать. Явно прослеживается прогресс языка. Пойду посмотрю на js ES6 классы, может человеческое наследование завезли и типы свойств и методов типа privet, public, protected, etc
@ScaleChannel
@ScaleChannel 4 жыл бұрын
Это тебе к typescript )
@val9489
@val9489 4 жыл бұрын
Все очень классно, но на 36:18 мы спрашиваем у cache значение по ключу null, логично, что там его нет, мы ведь обнулили Лену :) Но не важно, смысл понятен. И еще, правильно понимаю, что set, как и в Java, по сути внутри себя представляет map, но в отличие от Java, где она в значение сует dummy object, set в JS просто дублирует туда значение ключа?
@darkwilder9459
@darkwilder9459 3 жыл бұрын
теперь можно назвать переменную Putin и обнулить её)
@raizordano9050
@raizordano9050 Жыл бұрын
Ребят, подскажите, с чем связана ошибка: ReferenceError: obj is not defined at Object. (появилась, когда в методе WeakMap задал объект и сделал вызов)?
@fedoskamcha3768
@fedoskamcha3768 Жыл бұрын
🖤🖤🖤🖤
@user-yb8zd6gj2f
@user-yb8zd6gj2f Жыл бұрын
Владилен в конце не понял один момент, после использования метод split() на переменой с пользователями, мы хоть и получаем false при проверке через visits.has(users[1]), но если в конце вывести console.log(visits) там всё равно будут присутствовать всё те же два значения как и до метода split(). Почему так ?
@vladkonev3966
@vladkonev3966 6 ай бұрын
в users лежит 3 пользователя, split() удалил одного
@user-fx8rm4kw2y
@user-fx8rm4kw2y 4 жыл бұрын
Владилен, кинь криптокошель. Контент очень стоящий. будем донатить на развитие.
@VladilenMinin
@VladilenMinin 4 жыл бұрын
ЯД 410013757655670 Или в вк :)
@user-fx8rm4kw2y
@user-fx8rm4kw2y 4 жыл бұрын
@@VladilenMinin а эфир или бтс. ? так проще)))
@VladilenMinin
@VladilenMinin 4 жыл бұрын
@@user-fx8rm4kw2y Думаю, что заведу. Благодарю)
@inzoddex8312
@inzoddex8312 3 жыл бұрын
есть ли разница между преобразованием в массив через спред и через array.from ?
@VladilenMinin
@VladilenMinin 3 жыл бұрын
Нет
@iDzmitry
@iDzmitry 4 жыл бұрын
Спасибо за видео! Правда, у меня возник вопрос с примером про кэш и WeakMap; Если заменить WeakMap на Map, т.е. let cashe = new Map(); То после операции lena = null результотом работы console.log( cashe.has(lena) ); все равно будет false, т.е. такой же результат как и с WeakMap По задумке примера результат должен был быть true, если использовать Map ?
@tkachis
@tkachis 4 жыл бұрын
Нет. Что используя Map, что WeakMap, после "удаления" ключ-объекта и вызова метода has у карты, ты ищешь по "null", следовательно он тебе и возвращает false. Разница лишь в том, что в Map поле с этим ключ-объектом и значение по этому ключ-объекту - сохранилось. Но, так как у тебя этого объекта уже нет, получить это значение ты не сможешь. Получается, что у тебя в коде находится сущность, доступа к которой у тебя нет, но память она занимает. От сюда и "утечка памяти". Но, если взять пример с WeakMap, сборщик мусора JS, после удаления объекта (который выступал в качестве ключ-объекта в WeakMap) автоматически очищает это поле из WeakMap. Следовательно, никакой утечки памяти. А теперь представь, что у тебя таких объектов 10тыс. ---> вот тебе и профит. Надеюсь ответ еще был актуален)
@iDzmitry
@iDzmitry 4 жыл бұрын
@@tkachis Спасибо огромное) ответ актуален!
@Dimonina
@Dimonina 4 жыл бұрын
@@tkachis спасибо что кто-то это написал, потому что пример в видео некорректен
@olegspytsia8524
@olegspytsia8524 3 жыл бұрын
А если после присвоения объекту который выступал в качестве ключа null просто вывести содержимое карты console.log(cache) - ничего не очистилось даже если это WeakMap...
@Civilizer1976
@Civilizer1976 3 жыл бұрын
Если кто-то в начале видео не понял и впал в прострацию - поясню: Для конвертации Объект -> Массив создаём объект со значениями и пустой массив по типу const entries = [] И на оборот при конвертации Массив -> Объект создаём массив из массивов и пустой объект по типу const obj = {}
@user-zz4xn2to4y
@user-zz4xn2to4y 2 ай бұрын
Я проверил только что 'Мap' в случае удаления последней ссылки на 'obj' так же как 'Weakmap' остается без ключа и доступа к значению. по сути они в этом плане одинаково работают.
@GrantDrawChannel
@GrantDrawChannel 2 жыл бұрын
20:30 окей, а почемубы не добавить поле в обьекты масива users?
@ManOnHorizon
@ManOnHorizon 3 жыл бұрын
39:16 - суть действий верная, но небольшая ремарка по объяснению: на 14-й строке мы проверяем наличие не того, что было users[1], а того, что им стало после splice (а изначально было users[2]) No disrespect - смотрю твои ролики не первый день подряд запоем: много пробелов удаётся закрыть. И вообще контент просто восхитительный: как ты сегодня правильно сказал, никакой воды - всё по делу. Огромное спасибо! (Просто трудно было промолчать и пройти мимо...)
@konstantinmohin5989
@konstantinmohin5989 4 жыл бұрын
^+Shift+R
@gorbulevsv
@gorbulevsv 2 жыл бұрын
Не хочется отвлекать, но вдруг кому-то захочется ответить. Вопрос: получается, что простой коллекции, без доп. функционала, типа хранение только уникальных значений, в js нет, и я должен пользоваться обычным массивом?
@eugenenovikov671
@eugenenovikov671 4 жыл бұрын
Владилен, прикрепляйте, пожалуйста, под видео не ссылку на само это видео - ЭТО БЕССМЫСЛЕННО, а ссылку на плейлист.
@VladilenMinin
@VladilenMinin 4 жыл бұрын
Попробую, благодарю
@serhiipeksymov3739
@serhiipeksymov3739 3 жыл бұрын
Поддерживаю. А то очень не удобно потом искать эти ссылки. Весьма полезные
@zicoua
@zicoua 4 жыл бұрын
Подскажите, пожалуйста, насколько адекватно юзать эти классы с точки зрения производительности? Все просто и удобно, но писать объект в ключ, потом искать по нему... на мой скромный взгляд довольно ресурсозатратно. Есть ли смысл стараться не злоупотреблять таким сахаром?
@VladilenMinin
@VladilenMinin 4 жыл бұрын
На большие объемы данных возможно и нет. Но для локальных ситуаций - вполне
@zicoua
@zicoua 4 жыл бұрын
@@VladilenMinin Понятно, спасибо )
@Dimonina
@Dimonina 4 жыл бұрын
по идее в ключ попадает не копия объекта, а ссылка на оный, поэтому достаточно производительно должно быть, производительнее чем string мне кажется, но надо тестить
@overseer7591
@overseer7591 2 жыл бұрын
вроде норм, а можно уроки организовать на реальных примерах + домашка?
@yaroslavqwerty8609
@yaroslavqwerty8609 3 жыл бұрын
31:50 че за фигня, в обычном map так же работает. После присваивания объекта к null, у обычного map, так же при вызове map.get(obj) вернется undefined
@user-fx8rm4kw2y
@user-fx8rm4kw2y 4 жыл бұрын
одно время пытались добавить метод Object.observe. но почему-то от него отказались. хотелось бы рассмртреть данную тему. на примере библиотек или полифилов
@djebati2194
@djebati2194 4 жыл бұрын
На канале есть пару уроков по rxjs.
@user-fx8rm4kw2y
@user-fx8rm4kw2y 4 жыл бұрын
@@djebati2194 я наверное раз десять пересмотрел, хотел вычленить свою тему, это немного другое.
@vanGe1ion
@vanGe1ion 3 жыл бұрын
в WeakMap'е некорректно искать элемент по нулевому ключу, само собой вернется false. по факту, никак не проверить, удалилось GC'м значение из WeakMap'а или нет
@friendly334
@friendly334 2 жыл бұрын
Может кто-то знает, почему WeakMap все еще не очищен, даже если объект, который был передан в виде ключа был изменен на null? Возможно, в консоли браузера по другому работает GB?
@Oleksandr_Kuzmychov
@Oleksandr_Kuzmychov 4 жыл бұрын
А ничего что после того, как ты объект обнуляешь, обращение к нему вернёт null. Т.е. ты потом делаешь cache.has(null), cache.get(null). Если заменить в примере WeakMap на Map, то вывод не поменяется.
@Oleksandr_Kuzmychov
@Oleksandr_Kuzmychov 4 жыл бұрын
И с WeakSet тоже лажа: после users.splice(1, 1) у тебя в массиве по индексу 1 будет уже не { name: 'Alex' }, а { name: 'Irina' }, которую ты в visits не добавлял
@user-sw1hs4zc5u
@user-sw1hs4zc5u 4 жыл бұрын
Всем привет, есть проблемка при вызове метода Object.fromEntries(entries)... при вызове через консоль выдаёт ошибку TypeError: Object.fromEntries is not a function. Однако если пользоваться через браузер, то всё отлично отрабатывает. У кого-нибудь была такая проблема и кто как её решил?
@VladilenMinin
@VladilenMinin 4 жыл бұрын
Обнови ноду
@zerocool6951
@zerocool6951 4 жыл бұрын
Не очень понятно зачем нужен map для того чтобы найти время когда последний раз заходил пользователь, разве нельзя это сделать просто как свойство обьекта? В чем тут собственно разница?
@Dimonina
@Dimonina 4 жыл бұрын
например есть задачи, когда мы не можем менять исходный объект. Первое что приходит на ум, если потом эти данные уходят на сервер в JSON и там жестко проверяются на состав полей. тогда добавление поля в объект приведет к ошибке валидации.
@whicencer8819
@whicencer8819 3 жыл бұрын
6:08 установить nodemon, запускаешь скрипт через nodemon. И вуаля - скрипт срабатывает сразу после сохранения
@ZhanatBurabaev
@ZhanatBurabaev 4 жыл бұрын
cache.has(lena) === cache.has(null) && console.log('Нет ключа null')
@serhiikhotsyk869
@serhiikhotsyk869 Жыл бұрын
Много неточностей в этом видео, как повторение материала сойдет. На том же джаваскриптРу все лучше и детальней описано.
@ilyamishutka6731
@ilyamishutka6731 11 ай бұрын
Я извиняюсь, но я так и не понял в чём отличие Map и Set ? Не могли бы вы, пожалуйста, ответить
@VladilenMinin
@VladilenMinin 11 ай бұрын
Объект и массив
@ilyamishutka6731
@ilyamishutka6731 11 ай бұрын
@@VladilenMinin ааа, всë, я понял, спасибо огромное
@bohdan193
@bohdan193 4 жыл бұрын
Почему всегда число 42?
@VladilenMinin
@VladilenMinin 4 жыл бұрын
Потому что это ответ на все вопросы! (автостопом по галактике)
@Shkur777
@Shkur777 4 жыл бұрын
Владилен Минин ааа блин, точно! А меня проглючило, что это из 404 :))
@user-kn8nl4lv5y
@user-kn8nl4lv5y 4 жыл бұрын
Чет не работает у меня такой синтаксис, как map.delete(key: 'job'); console.log(map.has(key: 'job')); Видимо, лишнее там выражение "key:" Нужно просто ключ в скобках.
@user-tz5bo3to7y
@user-tz5bo3to7y 4 жыл бұрын
key в данном случае это ide подставляет для визуализации в виде "подсветки", т.е показывает какая последовательность параметров принимается в методе. Писать key конечно же не нужно.
@user-kn8nl4lv5y
@user-kn8nl4lv5y 4 жыл бұрын
@@user-tz5bo3to7y а, точно)
@user-vy8qb3ut5w
@user-vy8qb3ut5w 3 ай бұрын
Не очень понятно объяснение WeakSet & WeakMap, потому что если в тех же кейсах их заменить на Map & Set, то результат будет аналогичный, потому что ты тупа стираешь ссылку на данные объекты, и из-за этого он не может их найти. В консоль вывести тоже не вариант, остается верить на слово что их нет )
18 способов сократить JavaScript код
31:07
Владилен Минин
Рет қаралды 39 М.
World’s Deadliest Obstacle Course!
28:25
MrBeast
Рет қаралды 112 МЛН
ТАМАЕВ vs ВЕНГАЛБИ. ФИНАЛЬНАЯ ГОНКА! BMW M5 против CLS
47:36
Which one is the best? #katebrush #shorts
00:12
Kate Brush
Рет қаралды 25 МЛН
OMG🤪 #tiktok #shorts #potapova_blog
00:50
Potapova_blog
Рет қаралды 16 МЛН
Объект Map. Пары ключ - значение и вопрос собеседования
13:51
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 17 М.
Урок 15. JavaScript. Все о Spread и Rest
24:08
Владилен Минин
Рет қаралды 110 М.
TypeScript - Быстрый Курс за 70 минут
1:08:00
Владилен Минин
Рет қаралды 623 М.
Коллекции в Java: List, Set и Map
18:59
Devmark Ru
Рет қаралды 34 М.
Композиция или Наследование в JavaScript?
18:57
Владилен Минин
Рет қаралды 39 М.
World’s Deadliest Obstacle Course!
28:25
MrBeast
Рет қаралды 112 МЛН