Список событий в JavaScript
Бывают различные виды событий. К примеру, события: форм, полей, мыши, клавиатуры, страницы. Далее в таблице собраны названия событий и их описание.
События мыши
| Атрибут | Описание |
|---|---|
| click | Клик мыши на элементе (событие срабатывает после того, как кнопка мыши отпущена). |
| dblclick | Сделан двойной щелчок. |
| mousedown | Кнопка мыши нажата. |
| mouseup | Кнопка мыши отжата. |
| mouseover | Указатель мыши находится над элементом. |
| mousemove |
Указатель мыши движется над элементом.
|
| mouseout | Указатель мыши двигался над элементом, но ушёл с него. |
События клавиатуры
| Атрибут | Описание |
|---|---|
| keydown | Зажата кнопка на клавиатуре. |
| keypress | Тоже что и «keydown», но и кнопка зажимается настолько долго, что происходит повторный набор символа. |
| keyup | Была отпущена нажатая кнопка. |
События полей, форм и страницы
| Атрибут | Описание |
|---|---|
| submit |
Форма начала отправляться (нажата кнопка «submit»), но переадресация на страницу в атрибуте «action» ещё не началась.
|
| change | Содержимое элемента изменилось (срабатывает в том числе, если изменились значение атрибутов). |
| select | Текст или дочерние элементы выделены. |
| focus | Элемент получил фокус. К примеру, клик по текстовому полю даёт на него фокус и можно набирать текст |
| blur | Элемент потерял фокус. |
| load | Завершена загрузка страницы в браузере. |
| unload | Страница в браузере закрывается или происходит переход на другую страницу по ссылке. |
| scroll |
Происходит прокрутка страницы или элемента.
|
Cмотрите другие статьи:
Работа с атрибутами элементов в JavaScript
Список атрибутов для событий в JavaScript
Была ли эта статья полезна? Есть вопрос?
Закажите недорогой хостинг Заказать
всего от 290 руб
Set — JavaScript — Дока
Кратко
Скопировано
Set (по-русски говорят множество) — коллекция для хранения уникальных значений любого типа. Одно и то же значение нельзя добавить в Set больше одного раза.
Set — это неиндексированная коллекция, положить элемент в коллекцию можно, но достать нельзя. По элементам коллекции можно итерироваться.
Основные методы для работы с коллекцией:
add— добавить элемент.( ) delete— удалить элемент.( ) 
has— проверить, есть ли элемент в коллекции.( ) clear— очистить коллекцию.( ) for— выполнить функцию для каждого элемента в коллекции, аналогично одноимённому методу массива.Each ( )
Содержит свойство size для получения количества элементов в коллекции.
Пример
Скопировано
const uniqueIds = new Set()uniqueIds.add(123)uniqueIds.add(456)uniqueIds.add(111)uniqueIds.add(123)console.log(uniqueIds.size)// 3console.log(uniqueIds.has(111))// trueuniqueIds.delete(111)console.log(uniqueIds.size)// 2uniqueIds.clear()console.log(uniqueIds.size)// 0
const uniqueIds = new Set()
uniqueIds.add(123)
uniqueIds.add(456)
uniqueIds.add(111)
uniqueIds.add(123)
console.log(uniqueIds.size)
// 3
console.log(uniqueIds.has(111))
// true
uniqueIds.
delete(111)
console.log(uniqueIds.size)
// 2
uniqueIds.clear()
console.log(uniqueIds.size)
// 0
Как понять
Скопировано
Коллекция Set может хранить произвольный набор значений — нет разницы, хранить в коллекции примитивные типы, объекты или массивы. Set гарантирует, что одно и то же значение не может попасть в коллекцию больше одного раза. Если нам нужно получить коллекцию уникальных значений из массива неуникальных — Set один из способов этого достичь.
Добавляйте элемент в массив и множество, чтобы понять разницу:
Открыть демо в новой вкладкеСоздание коллекции
Скопировано
Коллекция создаётся при помощи конструктора.
Можно создать пустой Set:
const set = new Set()console.log(set.size)// 0
const set = new Set()
console.log(set.size)
// 0
Или сразу добавить в него элементы.
Для этого нужно передать в конструктор итерируемый список значений. Обычно это массив:
const filled = new Set([1, 2, 3, 3, 3, 'hello'])console.log(filled.size)// 4
const filled = new Set([1, 2, 3, 3, 3, 'hello'])
console.log(filled.size)
// 4
Работа с коллекцией
Скопировано
Set предоставляет небольшой набор методов, но их достаточно в большинстве случаев.
Добавляют элемент в Set с помощью метода add, а удаляют с помощью delete. В оба метода передаётся элемент, который нужно добавить или удалить:
const filled = new Set([1, 2, 3, '3', 3, 'hello'])filled.add(100)filled.delete(1)
const filled = new Set([1, 2, 3, '3', 3, 'hello'])
filled.add(100)
filled.delete(1)
Количество элементов в множестве хранится в свойстве size.
Проверить количество элементов в множестве filled:
console.log(filled.size)// 5 console.log(filled.size) // 5
Set позволяет проверить, был ли элемент уже добавлен. За это отвечает метод has:
const filled = new Set([1, 2, 3, '3', 3, 'hello'])console.log(filled.has(3))// trueconsole.log(filled.has('3'))// trueconsole.log(filled.has('My name'))// false
const filled = new Set([1, 2, 3, '3', 3, 'hello'])
console.log(filled.has(3))
// true
console.log(filled.has('3'))
// true
console.log(filled.has('My name'))
// false
Полностью очистить Set можно методом clear. Технически это то же самое, что и создать новый Set:
const filled = new Set([1, 2, 3, 3, 3, 'hello'])filled.clear()console.log(filled.size)// 0
const filled = new Set([1, 2, 3, 3, 3, 'hello'])
filled.
clear()
console.log(filled.size)
// 0
Обход
Скопировано
Set — это неиндексированная коллекция. В этой структуре данных нет понятия индекса элемента, поэтому нельзя получить произвольный элемент коллекции. В коллекцию можно только положить значение, а получить отдельное значение нельзя.
Основной инструмент работы с — обход коллекции. При обходе коллекции нам гарантируется, что мы будем получать элементы в порядке их добавления в Set, то есть первыми обойдём элементы добавленные раньше всего.
Обход можно организовать двумя способами:
1️⃣ Использовать метод for, который работает аналогично одноимённому методу массива:
const filled = new Set([1, 2, 3, 3, 3, 'hello'])filled.forEach(function(value) { console.log(value)})// 1// 2// 3// 'hello'
const filled = new Set([1, 2, 3, 3, 3, 'hello'])
filled.
forEach(function(value) {
console.log(value)
})
// 1
// 2
// 3
// 'hello'
2️⃣ Воспользоваться for:
const filled = new Set([1, 2, 3, 3, 3, 'hello'])for (let n of filled) { console.log(n)}// 1// 2// 3// 'hello'
const filled = new Set([1, 2, 3, 3, 3, 'hello'])
for (let n of filled) {
console.log(n)
}
// 1
// 2
// 3
// 'hello'
Особенности работы с непримитивными типами
Скопировано
Set использует строгое сравнение для проверки, есть ли элемент в коллекции или нет. Добавление примитивных значений разных типов будет работать как ожидается, приведения типов нет. При добавлении числа и строки с этим числом оба добавятся в коллекцию:
const set = new Set()set.add(1)set.add('1')console.log(set.size)// 2
const set = new Set()
set.add(1)
set.add('1')
console.log(set.size)
// 2
Непримитивные типы хранятся по ссылке, поэтому Set будет проверять что мы действительно пытаемся добавить тот же самый объект в коллекцию или нет.
Это может казаться нелогичным, потому что объекты могут выглядеть одинаково, но не быть одним и тем же объектом (то есть у них разные адреса в памяти):
Создадим два различных объекта с одинаковым набором свойств. Сравним их друг с другом и с собой:
const cheapShirt = { size: 'L', color: 'white' }const fancyShirt = { size: 'L', color: 'white' }console.log(cheapShirt === fancyShirt)// falseconsole.log(cheapShirt === cheapShirt)// trueconsole.log(fancyShirt === fancyShirt)// true
const cheapShirt = { size: 'L', color: 'white' }
const fancyShirt = { size: 'L', color: 'white' }
console.log(cheapShirt === fancyShirt)
// false
console.log(cheapShirt === cheapShirt)
// true
console.log(fancyShirt === fancyShirt)
// true
Мы создали два разных объекта (фигурные скобки создают новый объект), которые выглядят одинаково, но по факту это разные объекты. Они не равны друг другу — если в один добавить новое свойство, то второй не изменится.
Попробуем добавить эти объекты в Set:
const closet = new Set()closet.add(cheapShirt)closet.add(fancyShirt)console.log(closet.size)// 2
const closet = new Set() closet.add(cheapShirt) closet.add(fancyShirt) console.log(closet.size) // 2
Так как это разные объекты, то оба добавились в коллекцию. Если же попробовать добавить их второй раз, то эта операция будет проигнорирована:
const closet = new Set()closet.add(cheapShirt)closet.add(fancyShirt)console.log(closet.size)// 2closet.add(cheapShirt)closet.add(cheapShirt)closet.add(fancyShirt)console.log(closet.size)// 2
const closet = new Set()
closet.add(cheapShirt)
closet.add(fancyShirt)
console.log(closet.size)
// 2
closet.add(cheapShirt)
closet.add(cheapShirt)
closet.add(fancyShirt)
console.log(closet.size)
// 2
На практике
Скопировано
Николай Лопин советует
Скопировано
🛠 С помощью Set можно легко получить массив уникальных элементов из массива неуникальных с помощью конструктора и спред-синтаксиса:
const nonUnique = [1, 2, 3, 4, 5, 4, 5, 1, 1]const uniqueValuesArr = [...new Set(nonUnique)]console.log(uniqueValuesArr)// [1, 2, 3, 4, 5]
const nonUnique = [1, 2, 3, 4, 5, 4, 5, 1, 1] const uniqueValuesArr = [...new Set(nonUnique)] console.log(uniqueValuesArr) // [1, 2, 3, 4, 5]
Это не самый оптимальный способ преобразования с точки зрения скорости работы, но самый удобный с точки зрения количества кода.
Список методов массива JavaScript | by Mandeep Kaur
© Mandeep KaurВ JavaScript массив представляет собой структуру данных, содержащую список элементов, которые хранят несколько значений в одной переменной. Сила массивов JavaScript заключается в методах массива. Методы массива — это функции, встроенные в JavaScript, которые мы можем применять к нашим массивам. Каждый метод имеет уникальную функцию, которая выполняет изменение или вычисление нашего массива и избавляет нас от написания общих функций с нуля.
1. map() Этот метод создает новый массив с результатами вызова предоставленной функции для каждого элемента в этом массиве.
2. filter( )
Этот метод создает новый массив только с элементами, которые передают условие внутри предоставленной функции.
3. sort()
Этот метод используется для упорядочивания/сортировки элементов массива в порядке возрастания или убывания.
4. forEach()
Этот метод помогает перебрать массив, выполняя предоставленную функцию обратного вызова для каждого элемента в массиве.
5. concat()
Этот метод используется для объединения двух или более массивов и возвращает новый массив без изменения существующих массивов.
6. Every( )
Этот метод проверяет каждый элемент массива, удовлетворяющий условию, и возвращает значение true или false в зависимости от ситуации.
7. some( )
Этот метод проверяет, удовлетворяет ли хотя бы один элемент массива условию, возвращая true или false в зависимости от ситуации.
8. include()
Этот метод проверяет, содержит ли массив элемент, удовлетворяющий условию, и возвращает значение true или false в зависимости от ситуации.
9. join()
Этот метод возвращает новую строку путем объединения всех элементов массива, разделенных указанным разделителем.
10. reduce()
Этот метод применяет функцию к аккумулятору и каждому элементу массива, чтобы уменьшить его до одного значения.
11. find()
Этот метод возвращает значение первого элемента массива, прошедшего проверку в функции тестирования.
12. findIndex()
Этот метод возвращает индекс первого элемента массива, прошедшего проверку в функции тестирования.
13. indexOf()
Этот метод возвращает индекс первого вхождения заданного элемента в массив или -1, если он не найден.
14. fill()
Этот метод заполняет элементы массива статическими значениями и возвращает измененный массив.
15. slice()
Этот метод возвращает новый массив с указанными элементами от начала до конца.
16. reverse()
Этот метод переворачивает массив на месте.
Элемент с последним индексом будет первым, а элемент с индексом 0 будет последним.
17. push()
Этот метод добавляет один или несколько элементов в конец массива и возвращает новую длину массива.
18. pop()
Этот метод удаляет последний элемент из конца массива и возвращает этот элемент.
19. shift()
Этот метод удаляет первый элемент из массива и возвращает этот элемент.
20. unshift()
Этот метод добавляет один или несколько элементов в начало массива и возвращает новую длину массива.
Чтобы упростить работу с массивами в JavaScript, мы должны использовать методы массивов, чтобы упростить нашу работу и сделать код чище.
Спасибо, что прочитали.
Спецификация ECMAScript 2023 для JavaScript добавляет методы для массивов
ECMAScript 2023, который должен выйти в июне, должен добавить новые методы поиска и изменения массивов, разрешить использование символов в качестве ключей WeakMap и стандартизировать поддержку грамматики hashbang.

Пол Крилл
Редактор на свободе, Информационный мир |
Bigc Studio / ShutterstockECMAScript 2023, следующее запланированное обновление официальной спецификации языка программирования JavaScript, должно добавить четыре возможности в таких областях, как массивы и ключи WeakMap, на основе списка готовых предложений.
Готовые предложения, опубликованные ECMA TC39 (Техническим комитетом 39) на GitHub, отмечают следующие четыре функции, которые будут опубликованы в этом году:
- Поиск массива из последнего, предложение для
.findlast()и. найтипоследнийиндекс()методов для массива и типизированного массива. В предложении говорится, что поиск элемента в массиве является очень распространенным шаблоном программирования. Сценарии, в которых эта функция будет использоваться, включают случаи, когда разработчик знает, что поиск элемента от последнего к первому может иметь лучшую производительность, или разработчики заботятся о порядке элементов.
- Разрешение использования символов в качестве ключей в ключах WeakMap — предложение, которое расширяет API WeakMap, позволяя использовать уникальные символы в качестве ключей. В настоящее время WeakMaps разрешены только объекты в качестве ключей.
- Изменить массив по копии — предложение, которое предоставляет дополнительные методы для
Array.prototypeиTypedArray.prototype, позволяющие вносить изменения в массив, возвращая новую его копию с изменением. - Грамматика Hashbang, предложение, соответствующее использованию де-факто на некоторых хостах CLI JS, которые допускают Shebangs/Hashbang. Эти хосты удаляют хэш-банг, чтобы генерировать действительные исходные тексты JS перед передачей в механизмы JS. Этот план позволит перенести зачистку на двигатели, а также унифицировать и стандартизировать то, как это делается.
Обновленные версии ECMAScript традиционно дорабатываются ECMA в июне. В прошлогоднем ECMAScript 2022 были представлены элементы класса и высокоуровневые возможности ожидания.

add(cheapShirt)closet.add(fancyShirt)console.log(closet.size)// 2
..new Set(nonUnique)]console.log(uniqueValuesArr)// [1, 2, 3, 4, 5]