Get to know MDN better
Esta página foi traduzida do inglês pela comunidade. Saiba mais e junte-se à comunidade MDN Web Docs.
Este capítulo apresenta coleções de dados que são ordenados por uma chave; Objetos Map e Set contêm elementos que são iteráveis em ordem de inserção.
ECMAScript 6 apresenta uma nova estrutura de dados para mapear valores para valores. Um objeto Map é um simples mapa de chave/valor que pode ter seus elementos iterados por ordem de inserção.
O código a seguir mostra algumas operações básicas com um Map. Veja também a página de referência do Map para mais exemplos e a API completa. Você pode usar um laço for...of para retornar um array de [chave, valor] para cada iteração.
Tradicionalmente, objetos tem sido usado para mapear strings para valores. Objetos permitem que você defina chaves para valores, recupere esses valores, exclua chaves e detecte se algo está armazenado em uma chave. Objetos Map, contudo, possuem algumas vantagens que os tornam mapas melhores.
Estes dois tipos podem ajudar você a decidir se usa um Map ou um Object:
O objeto WeakMap é uma coleção de pares de chave/valor em que as chaves são somente objetos e seus valores podem ser valores arbitrários. As referências do objeto nas chaves são fracamente mantidas, isso significa que eles são alvo da garbage collection (coleta de lixo) se não houver nenhuma outra referência para o objeto. A API WeakMap é a mesma API do Map.
Uma diferença para objetos Map é que chaves WeakMap não são enumeráveis (isto é, não há um método que dê a você uma lista de chaves). Se eles fossem, a lista dependeria do estado da coleta de lixo, introduzindo um não-determinismo.
Para mais informações e código de exemplo, veja também "Por quê WeakMap?" na página de referência WeakMap.
Um caso de uso de objetos WeakMap é armazenar dados privados para um objeto ou ocultar detalhes de implementação. O exemplo a seguir é Nick Fitzgerald a partir de um post "Ocultando detalhes de implementação com WeakMaps ECMAScript 6" em seu blog. Os dados privados e métodos pertencem ao objeto e são armazenados nos objetos WeakMap privados. Tudo exposto na instância e o protótipo é público, todo o restante é inacessível a partir do mundo externo por que privado não é exportado pelo módulo.
Objetos Set são coleções de valores. Você pode iterar seus elementos em ordem de inserção. Um valor em um Set só pode ocorrer uma vez; ele é único em uma coleção Set.
O código a seguir mostra algumas operações básicas com um Set. Veja também a página de referência Set para mais exemplos e a API completa.
Você pode criar um Array a partir de um Set usando Array.from ou o operador de propagação. Além disso, o construtor Set aceita um Array para converter em outra direção. Observe novamente que objetos Set armazenam valores únicos, então quaisquer elementos duplicados de um Array são excluídos quando convertidos.
Tradicionalmente, um conjunto de elementos tem sido armazenados em arrays JavaScript em muitas situações. O novo objeto Set, contudo, tem algumas vantagens:
Objetos WeakSet são coleções de objetos. Um objeto no WeakSet só pode ocorrer uma vez; Isto é único em coleções WeakSet e objetos não são enumeráveis.
As principais diferenças para objetos Set são:
Os casos de uso do objeto WeakSet são limitados. Eles não vão desperdiçar memória para ser seguro o uso de elementos DOM como chaves e marcá-los para propósitos de controle, por exemplo.
Ambos, a igualdade de chaves de objetos Map e a igualdade de valor de objetos Set, são baseados no "algoritmo mesmo valor de zero":
This page was last modified on 8 de dez. de 2025 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.