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); // 3Adicionando 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")); // undefinedPara 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