Projeto Atual:

Programando Aplicativos com Javascript

14/07/2022

Chaves de Acesso Esparsas ou Não Numéricas – Map

Em um Array, você pode referenciar um item pela sua posição, um valor numérico entre zero e o tamanho do Array menos 1. O valor numérico utilizado é a chave de acesso, neste caso, também chamada de índice. O conjunto de chaves de acesso possível para um Array específico é denso, ou seja, os índices seguem uma sequência que não tem "buracos" no universo dos números inteiros. Veja um exemplo simples:

const animais =  ['leão', 'tigre', 'elefante', 'girafa'];

animais[0]  // leão
animais[1]  // tigre
animais[2]  // elefante
animais[3]  // girafa

O tipo de coleção que vamos apresentar neste tópico permite que valores sejam armazenados em posições esparsas. As chaves podem ser numéricas ou não. Por exemplo, podem ser texto. Esse tipo de dado é muitas vezes chamado de dicionário. Em Javascript, o tipo de dado com essas proprietades é Map. Veja abaixo um exemplo de como criar um Map para guardar o preço de cada fruta:

const frutas = new Map([
  ["banana", 3.59 ],
  ["laranja", 4.39 ],
  ["manga", 8.15 ],
  ["limão", 2.10 ]  
]);

Ou seja, para criar um Map, você enumera cada par chave/valor entre colchetes - '[' e ']', e envolve tudo em um outro par de colchetes. Você também pode começar com um Map vazio, e acrescentar os elementos um a um:

const frutas = new Map();

frutas.set("banana", 3.59);
frutas.set("laranja", 4.39);
...

Métodos para o tipo Map

Depois de criado o mapa (ou dicionário), você pode adicionar novos valores, ou alterar os valores armazenados para chaves já utilizadas, usando o mesmo método set().

frutas.set("banana", 2.33); // Altera o preço do quilo de banana
frutas.set("abacaxi", 5.20);   // Cria um novo elemento com o preço do abacaxi

Veja abaixo uma tabela com alguns métodos disponíveis para realizar operações com Map (suponha que d é um Map):

Método        Exemplo              Descrição

get()            d.get(chave)         Recupera o valor associado à chave dada.

delete()       d.delete(chave)    Apaga o elemento associado à chave dada.

has()           d.has(chave)        Devolve true se há um elemento associado à chave dada.

No caso do método get(), se não houver elemento associado à chave dada, o retorno é undefined. Em outras linguagens de programação, a mesma situação poderia gerar um erro de execução.

Para percorrer todos os itens em um dicionário, você pode usar um comando for .. of, que retorna os pares [chave, valor] na ordem em que foram inseridos:

    for ([pessoa, idade] of idades) {
      alert(pessoa + "' tem " + idade + "anos.");
    }


Consulte a referência da linguagem para conhecer mais métodos de Map.

Vamos aproveitar a idéia das frutas para construir um exemplo mais completo. Se você faz compras em um supermercado, já pode ter visto o caixa consultando o código numérico associado a uma fruta ou legume vendido a granel. Para os produtos mais comuns, o caixa até memoriza o código. Que tal criarmos um programa que facilita a vida do caixa, e aceita o nome do produto diretamente, já informando o preço por quilo?

Nosso programa poderia também gerar a lista com os preços de todos os produtos.

Veja o programa no próximo tópico.


Próxima

Voltar ao Sumário (Javascript)

Nenhum comentário:

Postar um comentário