Работа с массивами стала намного удобнее!
HTML-код
- Опубликовано: 29 июн 2024
- Этим летом утвержден новый стандарт ECMAScript 2023. И сегодня мы познакомимся с кучей новых методов для массивов!
findLast, findLastIndex proposal - github.com/tc39/proposal-arra...
toReversed, toSorted, toSpliced, with - github.com/tc39/proposal-chan...
symbols as WeakMap key - github.com/tc39/proposal-symb...
Hashbang Grammar - github.com/tc39/proposal-hash...
Поддержать Айти Синяка можно здесь:
RUclips: / @it-sin9k
boosty: boosty.to/sin9k
Patreon: / itsin9k
00:00 Анонс темы
00:37 findLast, findLastIndex
02:32 toReversed
03:49 toSorted
04:07 Вспоминаем splice
05:46 toSpliced
06:05 with
06:54 И другие плюшки
07:16 Подписывайтесь!
Подписаться на канал: / @it-sin9k
Twitter: / it_sin9k
-------------------------
Данный канал создан для инициирования бесед на различные темы IT сферы (социальные / технические), а также для тех кому короткая видео выжимка статьи, выступления на конференции или же просто личных мыслей, являются более удобным форматом
по сути под капотом все старое, но код становится более гигиеничным и читаемым, это ОК)
Язык становится более функциональным и декларативным. Спасибо за видео!
Спасибо за видео! Было познавательно!
Тащусь от твоей подачи!
Спасибо!)
Фичи на границе между "а оно точно надо" и "неужели этого ещё не было в ecma script". Если это основные изменения релиза, то как то не густо
Полностью согласен) совсем не густо) еле на видео насобирал)
Интересный видос.
Спасибо за обзоры )
Коммент в поддержку продвижения
Спасибо большое за познавательное видео!
спасибо
Молодец! Коротко и ясно👍
Как только узнал об этих методах, пошёл смотреть в полифилы в core-js, оказалось что они там есть) потом пошёл рефакторить наш код. Какое же удовольствие получаешь, когда переписываешь костыли с копированием и с реверсами в нормальный вид😊
Вот это у вас хороший рабочий день вышел))
@@it-sin9k пара часов на самом деле) чтоб написать регулярку и найти все места, которые потенциально можно отрефакторить
Спасибо. Как всегда очень информативно и лаконично
Всегда приятно читать такие комментарии)
Спасибо за видео! Интересно было бы рассмотреть новые методы с точки зрения производительности
Не забывайте, что ECMAScript это стандарт, а производительность зависит от реализации. Оптимизация одних и тех же фичей с течением времени изменяется и может отличаться в разных браузерах и на разных движках. Лучше самому научиться быстро проверять перфоменс выбранного решения, в работе это пригодится ещё не раз
Спасибки ))
Красава, Синяк
Красиво
Один из моих любимых блогеров!
Один из моих любимых комментариев)
Сейчас уже середина лета, а это значит пришло время разобраться как данные передаются в js, по ссылке или по значению.
Такую сложную задачу я бы на зиму оставил)
кстати, заметил, что развитие иязыка пошло в сторону функциональщины, иммутабельности и т.д. Скоро, наверно, в нативное ядро тупо реакт засунут и все)
ахахахах)
@@it-sin9k не, а че) в свое время из jQuery кое-что в ядро зашили же) они же смотрят в своем ТС39 на боль людей и видят какими костылями пользуются.
что требуют разработчики, то и дают))
Ангуляр зашьют (шутка)
@@bukanaka В Хром -- реакт, а в ФФ -- ангуляр, а в Сафари -- Вью. И добро пожаловать обратно в 2007й с приседаниями вокруг совместимости браузеров
with прям пушка!
Вначале кажется ошибка, все таки toReversed, а не toReserved.
А в целом - спасибо за видео про новые методы)
точно) блин) стыдоба)
@@it-sin9k захотелось подушнить)
Комментарий в поддержку канала
Мои любимые комментарии)))
С конца можно найти еще быстрее. Через цикл for искать с конца массива ))
While сила!) нужно быть стронг!)
Спасибо за напоминание что было и что стало.
Всегда рад помочь :)
Классное видео, хоть js я не люблю
❤❤❤
Спасибо Синяк! Просто интересно кто еще завязан на IE? Гос сайты перешли на Яндекс браузер, так что не знаю даже зачем его еще поддерживать.
Банкоматы на ИЕ поголовно))
@@it-sin9k интересно, по какой причине..?
you could use reduceRight to iterate array from the end.
reduce iterates all items in the array even if you found the right one. So it is useless way :(
Для первого примера уже давно придуманы циклы 😀
писать только лень их) for и while уже давно не встречал в коде)
@@it-sin9k зато выйти из них можно когда хочешь ;)
findLast, findLastIndex и with - эти прям радуют! Ну, а про немутирующие методы пока не понятно. Наверное, тоже лишними не будут :)
"Не понятно", потому что они именно *мутирующие...*
😉
@@victormog нет.
Самое забавное для многих мутирующих методов можно сделать декоратор, который будет возвращать новый массив и для этого не нужно расширение ES.
любые кастомные расширения методов несут за собой риски. А что если проект потом использоваться как микрофронтенд, а что если нужно, чтобы это работало в рамках сторибука и т.д. и т.п. Потом эти расширения нужно тащить везде за собой
@@it-sin9k само-собой, тоже можно сказать про фреймворки, их тоже тащат из проекта в проект и что теперь не пользоваться?
А так я лишь сказал что сделать аналоги мутирующих в не мутирующие достаточно тривиально.
Чувствую себя ворчащим дедом, но каждый новый релиз ECMAScript встречаю закатыванием глаз.. Хочется чего-то нового и крутого, а то каждый год добавляют новые методы, которые делают то же самое что и до этого, но немного короче..
ага) есть такое) я тоже все жду новинок) но только на React конфы вся надежда))
Есть ли какие-то выгоды при использовании WeakRef и WeakSet? Какие есть use кейсы?
Для этого нужно делать отдельное видео) может и запишу)
Наверное, когда нужна в каком-то конкретном месте коллекция огромных данных и после их использования они больше не нужны и могут быть удалены.
А зачем клонить, разворачивать, если можно линейно пойти с конца и сделать ранний выход, всегда Ваш КЭП)
вариант топ!) только лень писать эту логику))
Циклом что ли?
😂
@@victormog while сила!
lastIndexOf
@@BearVodkaAndValenki Не поможет при поиску по свойству в массиве объектов.
По поводу findLast - чаще всего осуществляя поиск, заранее мы не знаем в начале или конце находится элемент, а если в середине? - в таком случае в дальнейшем обновлении findMiddle нужен, findPreLast и т.д. Выглядит как обновление ради обновления. Также как и то, что теперь не нужно следить за мутацией. Мне кажется лучше знать основу, что мутируется и почему и следить за этим, чем плодить методы и запоминать их...Выглядит как будто программисты становятся ленивее и разработчики стандартов это поддерживают. По мне ввели бы лучше нативный Object observer, что дало бы возможность отслеживать изменения объектов, позволило бы отойти от React, Angular и т.д. и писать на ванильном js. Вообщем как по мне с обновлениями копают не в ту сторону -_-
Типа Proxy, но чтоб не создавать новый объект?
@@BogdanPolonsky Да, именно. В какой то версии ES даже планировалось ввести (если не изменяет память Object.observe должен был появиться), но что то пошло не так.
Чаще всего нужен первый элемент массива. Но иногда, весьма редко, нужно найти именно последний элемент. И дело не в том, чтобы найти его побыстрее, а чтобы найти последний из дублирующихся.
А пруфы есть, что findLast() под капотом не делает тоже самое - клонирование исходного массива, reverse и find()?
Я сомневаюсь...
даже если в самом худшем случае это и происходит, то это реализация сделана уже на плюсах, а не на JS. Что явно будет быстрее)
@@it-sin9k Если так, то гуд, - я плюсы уважаю! Респект Страуструпу!!!
А как при написании кода быстро понять иммутабельный метод или нет? Не залезая в mdn.
открывать консоль и быстро тестить))
просто запомнить)
Выглядит это все скчно. Выпускать новый стандарт каждый год такое себе
действительно полезного в видео почти не было. понимаю, что это потому что изменений толком не было
какой год такие и обновления :D
про splice не очевидно и за это по рукам бить нужно
не очевидно что именно?)
топ
arr.with(1,cc) === (arr[1]= "cc") ?
Я правильно понимаю, что это сделано больше для удобства и повышения читаемости кода?
разница в том, что с присвоением вы мутируете текущий массив, а с with вы создаете новый и его изменяете