Map em JavaScript
O objeto Map
ou dicionário representa uma estrutura de dados onde cada elemento tem uma chave e um valor. As chaves dentro do dicionário são únicas, ou seja, uma chave pode estar associada a apenas um elemento. Para criar um dicionário, utiliza-se o construtor do objeto Map
:
const myMap = new Map();
Também é possível inicializar o dicionário com valores iniciais. Para isso, passa-se um array para o construtor, onde cada elemento do array representa um par chave-valor:
const myMap = new Map([
[1, "a"],
[2, "b"],
[3, "c"],
]);
console.log(myMap); // Map(3) {1 => "a", 2 => "b", 3 => "c"}
Neste caso, os números 1, 2 e 3 são as chaves, enquanto as strings "a", "b" e "c" são os valores.
As chaves e os valores não precisam ser do mesmo tipo. O tipo das chaves e dos valores pode variar:
const myMap = new Map([
[1, "a"],
["b", true],
[false, 3],
]);
console.log(myMap); // Map(3) {1 => "a", "b" => true, false => 3}
Tamanho do dicionário
Com a propriedade size, pode-se verificar a quantidade de elementos em um Map
:
const myMap = new Map([
[1, "a"],
[2, "b"],
[3, "c"],
]);
console.log(myMap.size); // 3
Adicionando e Modificando Elementos
Para adicionar ou modificar elementos, utiliza-se o método set()
: se a chave já existe, o valor é atualizado; caso contrário, um novo par chave-valor é adicionado:
const myMap = new Map([
[1, "a"],
[2, "b"],
[3, "c"],
]);
myMap.set(1, "d"); // atualiza o valor da chave 1
myMap.set(4, "e"); // adiciona um novo par chave-valor
console.log(myMap); // Map(4) {1 => "d", 2 => "b", 3 => "c", 4 => "e"}
Obtendo valores
Para obter um valor a partir de uma chave, utiliza-se o método get()
:
const myMap = new Map([
["red", "vermelho"],
["blue", "azul"],
["green", "verde"],
]);
console.log(myMap.get("red")); // vermelho
console.log(dict.get("violet")); // undefined
Para evitar o retorno de undefined
, pode-se verificar a existência de um elemento pela chave com o método has()
:
const myMap = new Map([
["red", "vermelho"],
["blue", "azul"],
["green", "verde"],
]);
console.log(myMap.has("red")); // true
console.log(myMap.has("violet")); // false
if (dict.has("red")) console.log(dict.get("red"));
Removendo Elementos
Para remover um elemento a partir de uma chave, utiliza-se o método delete()
:
const myMap = new Map([
["red", "vermelho"],
["blue", "azul"],
["green", "verde"],
]);
myMap.delete("red");
console.log(myMap); // Map(2) {"blue" => "azul", "green" => "verde"}
Para remover todos os elementos, utiliza-se o método clear()
:
const myMap = new Map([
["red", "vermelho"],
["blue", "azul"],
["green", "verde"],
]);
myMap.clear();
console.log(myMap); // Map(0) {}
Percorrendo Elementos
Para percorrer os elementos de um dicionário, pode-se utilizar o método forEach()
:
const myMap = new Map([
["red", "vermelho"],
["blue", "azul"],
["green", "verde"],
]);
myMap.forEach((value, key) => console.log(key, ":", value));
Outra forma de percorrer os elementos é utilizando o loop for...of
:
const myMap = new Map([
["red", "vermelho"],
["blue", "azul"],
["green", "verde"],
]);
for (const [key, value] of myMap) {
console.log(key, ":", value);
}
Saída no console:
red : vermelho blue : azul green : verde