- Опубликовано
Хэш-карты в JavaScript: высокопроизводительные пары ключ-значение
- Авторы
- Имя
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
Почему HashMap?
Мы все знаем, что в других языках программирования есть структура данных, называемая Hashtable. Она хранит пары ключ-значение, которые очень удобны благодаря поиску за O(1) (постоянное время). Это выгодная структура данных, которую можно использовать для хранения информации. В JavaScript у нас нет встроенной структуры данных, подобной Hashtable. Но мы можем использовать объект для хранения пар ключ-значение. В JavaScript это называется Map.
Что такое Map?
Map - это коллекция элементов, где каждый элемент хранится как пара Ключ, Значение. Ключи и значения Map могут быть любыми значениями (как объектами, так и примитивными значениями). Объект Map итерирует свои элементы в порядке вставки - цикл for...of возвращает массив [ключ, значение] для каждой итерации.
Map хранит пары ключ-значение, где ключи могут быть любого типа данных. Map имеет свойство, которое представляет размер Map. Map запоминает первоначальный порядок вставки ключей.
Методы и свойство Map
Метод | Описание |
---|---|
new Map() | Создает новый объект Map |
set() | Устанавливает значение для ключа в Map |
get() | Возвращает значение для ключа |
has() | Возвращает логическое значение, указывающее, существует ли ключ в Map |
delete() | Удаляет ключ из Map |
clear() | Удаляет все ключи из Map |
values() | Возвращает объект итератора значений в Map |
keys() | Возвращает объект итератора ключей в Map |
entries() | Возвращает объект итератора пар ключ-значение в Map |
forEach() | Выполняет предоставленную функцию один раз для каждой пары ключ-значение в Map |
Свойство | Описание |
---|---|
size | Возвращает количество пар ключ/значение в Map |
Пример Map
const map = new Map()
map.set('name', 'John')
map.set('age', 30)
map.set('isMarried', true)
map.set('address', { city: 'New York', state: 'NY' })
map.set('hobbies', ['reading', 'writing', 'coding'])
console.log(map.get('name')) // John
console.log(map.get('age')) // 30
console.log(map.get('isMarried')) // true
console.log(map.get('address')) // {city: 'New York', state: 'NY'}
console.log(map.get('hobbies')) // ['reading', 'writing', 'coding']
console.log(map.size) // 5
Итерация Map
const map = new Map()
map.set('name', 'John')
map.set('age', 30)
map.set('isMarried', true)
map.set('address', { city: 'New York', state: 'NY' })
map.set('hobbies', ['reading', 'writing', 'coding'])
// Итерация ключей
for (const key of map.keys()) {
console.log(key)
}
// Итерация значений
for (const value of map.values()) {
console.log(value)
}
// Итерация пар ключ-значение
for (const [key, value] of map.entries()) {
console.log(key, value)
}
// Итерация пар ключ-значение
map.forEach((value, key) => {
console.log(key, value)
})
Map vs. Object
Map | Object |
---|---|
Map - это коллекция элементов с ключами, как и объект. Но основное отличие в том, что Map позволяет использовать ключи любого типа. | Ключи объекта должны быть либо строкой, либо символом. |
Map итерируема и может быть легко пройдена в цикле. | Объект не итерируемый и его нельзя легко пройти в цикле. |
Map имеет встроенный метод forEach, поэтому нет необходимости преобразовывать его в массив. | Объект не имеет встроенного метода forEach. |
Map имеет свойство size, поэтому мы можем легко получить количество элементов. | Объект не имеет свойства size. |
Map может использовать объекты в качестве ключей. | Объект не может использовать объекты в качестве ключей. |
Map в целом быстрее, чем Object. | Объект, как правило, медленнее, чем Map. |
Заключение
В этой статье мы узнали о Map в JavaScript. Мы узнали о методах и свойствах Map. Мы также узнали о различиях между Map и Object. Надеюсь, вам понравилась эта статья. Если у вас есть какие-либо вопросы, оставьте комментарий ниже. Спасибо за прочтение.
Оригинал статьи: https://blog.imam.dev/blog/javascript-hashmap
Ссылки
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map