Dicionário JavaScript: Usando Objetos e Maps
Descubra como usar Objetos e Maps em JavaScript para gerenciar pares chave-valor com eficiência.

Quando se trabalha com JavaScript, pode-se questionar se ele possui um tipo de dicionário embutido como o Python. A resposta curta é não — JavaScript não tem uma estrutura de dicionário dedicada. No entanto, oferece duas alternativas poderosas para lidar com pares chave-valor: Objetos e Maps.
Objetos têm sido a principal forma de armazenar dados estruturados em JavaScript, enquanto Maps foram introduzidos no ES6 para oferecer mais flexibilidade e eficiência em casos de uso específicos. Entender quando usar um Objeto versus um Map é crucial para escrever um código JavaScript limpo, otimizado e fácil de manter.
Neste guia, vamos explicar como usar Objetos e Maps, explorar suas diferenças e ajudá-lo a escolher o melhor para suas necessidades.
Objetos
Um objeto é um tipo de dado JavaScript usado para armazenar dados de chave-valor. Se precisarmos armazenar as informações de um usuário, podemos usar um objeto:
const userInfo = { name: 'John Doe', age: 25, address: 'Boulevard avenue' };
Sem objetos ou um tipo de dado chave-valor, teríamos que armazenar cada informação de John Doe separadamente, o que tornaria o aplicativo tedioso de manter. No exemplo de código, você notará que conseguimos armazenar tanto uma string quanto um número na mesma variável. É por isso que os objetos (e os pares chave-valor em geral) são bastante importantes e úteis.
Você pode armazenar qualquer tipo de dado em um objeto JavaScript, até mesmo uma função ou outros objetos:
const userInfo = { name: "John Doe", age: 25, address: "Boulevard avenue", printName: function () { return this.name; }, favoriteColors: ["Red", "Blue"], };
Maps
Os Maps do JavaScript fornecem uma maneira única de armazenar dados em pares chave-valor. Cada item é único e mantém a ordem de inserção. Uma vantagem que os Maps têm sobre os objetos é que qualquer tipo de dado pode ser usado tanto como chave quanto como valor:
const userInfo = new Map(); const ageFunc = () => { return "age"; }; userInfo.set("name", "John Doe"); userInfo.set(ageFunc(), 25); console.log(userInfo.get(ageFunc())); // 25
Diferenças chave entre objetos e maps
Recurso | Objetos | Maps |
---|---|---|
Tipos de chave | Strings & Símbolos apenas | Qualquer tipo de dado (e.g., objetos, funções, números) |
Ordem de iteração | Não garantida (as chaves seguem a ordem de inserção em navegadores modernos, mas implementações antigas diferem) | Garantida (as chaves mantêm a ordem de inserção) |
Performance | Mais rápido para pequenos conjuntos de dados | Otimizado para adições e exclusões frequentes |
Recuperação de tamanho | Requer Object.keys(obj).length | Usa a propriedade map.size |
Herança de protótipo | Objetos herdam de Object.prototype , o que pode causar comportamento não intencional | Maps não herdam propriedades de Object.prototype |
Verificação de existência de chave | Usa "key" in obj ou obj.hasOwnProperty("key") | Usa map.has(key) |
Serialização | Suporta JSON.stringify() | Necessita de conversão manual para um objeto primeiro |
Uso | Melhor para dados estruturados e estáticos (e.g., respostas de API, perfis de usuário) | Melhor para dados dinâmicos e frequentemente atualizados (e.g., cache, tabelas de pesquisa) |
Escolhendo o melhor dicionário
Ao escolher a melhor estrutura semelhante a um dicionário para seu caso de uso, a forma dos dados e como você deseja que eles sejam manipulados é fundamental.
- Objetos são ideais para dados estruturados com chaves fixas onde você tem propriedades predefinidas
- Maps são melhores para pares chave-valor dinâmicos onde as chaves podem mudar frequentemente ou precisam suportar diferentes tipos de dados
Use objetos quando precisar de dados simples e estruturados com chaves de string. Use maps quando precisar de inserções eficientes, exclusões e chaves complexas.
Conclusão
Enquanto o JavaScript não tem um tipo de dicionário dedicado, Objetos e Maps oferecem soluções robustas para lidar com pares chave-valor. A escolha entre eles depende das suas necessidades específicas:
- Use Objetos ao lidar com dados estruturados com chaves predefinidas, como respostas de API ou configurações de configuração
- Use Maps ao trabalhar com pares chave-valor dinâmicos, especialmente se as chaves nem sempre forem strings ou o desempenho for uma preocupação
Entender as forças e fraquezas dos Objetos e Maps no JavaScript ajudará a escrever um código JavaScript mais eficiente e fácil de manter. Seja armazenando preferências do usuário, gerenciando o estado do aplicativo ou implementando um mecanismo de cache, escolher a estrutura certa melhorará o desempenho e a legibilidade do seu aplicativo.