- Publicado em
Hash Maps em JavaScript: Pares Chave-Valor de Alto Desempenho
- Autores
- Nome
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
Por que usar Map?
Bem, todos sabemos que outras linguagens de programação possuem algo chamado Hashtable. É uma estrutura de dados que armazena pares chave-valor e é muito útil devido à sua busca em tempo constante O(1). É uma estrutura de dados vantajosa que podemos utilizar para armazenar dados. Em JavaScript, não temos uma estrutura de dados nativa como Hashtable. Mas podemos usar um objeto para armazenar pares chave-valor. Ele é chamado de Map em JavaScript.
O que é um Map?
Um Map é uma coleção de elementos onde cada elemento é armazenado como um par Chave, Valor. As chaves e valores de um Map podem ser qualquer valor (tanto objetos quanto valores primitivos). Um objeto Map itera seus elementos na ordem de inserção - um loop for...of retorna um array de [chave, valor] para cada iteração.
Um Map mantém pares chave-valor onde as chaves podem ser de qualquer tipo de dado. Um Map possui uma propriedade que representa o tamanho do Map. Um Map lembra a ordem de inserção original das chaves.
Métodos e Propriedade do Map
Método | Descrição |
---|---|
new Map() | Cria um novo objeto Map |
set() | Define o valor para uma chave em um Map |
get() | Retorna o valor para uma chave |
has() | Retorna um booleano indicando se uma chave existe em um Map |
delete() | Remove uma chave de um Map |
clear() | Remove todas as chaves de um Map |
values() | Retorna um objeto iterável dos valores em um Map |
keys() | Retorna um objeto iterável das chaves em um Map |
entries() | Retorna um objeto iterável dos pares chave-valor em um Map |
forEach() | Executa uma função fornecida uma vez para cada par chave-valor em um Map |
Propriedade | Descrição |
---|---|
size | Retorna o número de pares chave/valor em um Map |
Exemplo de 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
Iteração do 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'])
// Iterar chaves
for (const key of map.keys()) {
console.log(key)
}
// Iterar valores
for (const value of map.values()) {
console.log(value)
}
// Iterar pares chave-valor
for (const [key, value] of map.entries()) {
console.log(key, value)
}
// Iterar pares chave-valor
map.forEach((value, key) => {
console.log(key, value)
})
Map vs. Object
Map | Object |
---|---|
Map é uma coleção de itens de dados chaveados, assim como um Object. Mas a principal diferença é que Map permite chaves de qualquer tipo. | As chaves do Object devem ser uma string ou um símbolo. |
Map é iterável e pode ser percorrido facilmente. | Object não é iterável e não pode ser percorrido facilmente. |
Map possui um método forEach integrado, então não há necessidade de convertê-lo para um array. | Object não possui um método forEach integrado. |
Map possui uma propriedade size, para que possamos obter facilmente o número de itens. | Object não possui uma propriedade size. |
Map pode usar objetos como chaves. | Object não pode usar objetos como chaves. |
Map é mais rápido que Object em geral. | Object é geralmente mais lento que Map. |
Conclusão
Neste artigo, aprendemos sobre Map em JavaScript. Aprendemos sobre os métodos e propriedades do Map. Também conhecemos a diferença entre Map e Object. Espero que você tenha gostado deste artigo. Se você tiver alguma dúvida, deixe um comentário abaixo. Obrigado por ler.
Publicado originalmente em: https://blog.imam.dev/blog/javascript-hashmap
Referências
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map