| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Guide/Keyed_collections | [Back] [Original] |
Get to know MDN better
Esta pgina foi traduzida do ingls pela comunidade. Saiba mais e junte-se comunidade MDN Web Docs.
Este captulo apresenta colees de dados que so ordenados por uma chave; Objetos Map e Set contm elementos que so iterveis em ordem de insero.
Objeto MapECMAScript 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 insero.
O cdigo a seguir mostra algumas operaes bsicas com um Map. Veja tambm a pgina de referncia do Map para mais exemplos e a API completa. Voc pode usar um lao for...of para retornar um array de [chave, valor] para cada iterao.
var sayings = new Map();
sayings.set("dog", "woof");
sayings.set("cat", "meow");
sayings.set("elephant", "toot");
sayings.size; // 3
sayings.get("fox"); // undefined
sayings.has("bird"); // false
sayings.delete("dog");
sayings.has("dog"); // false
for (var [key, value] of sayings) {
console.log(key + " goes " + value);
}
// "cat goes meow"
// "elephant goes toot"
sayings.clear();
sayings.size; // 0
Object e Map comparadosTradicionalmente, 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.
Objeto so Strings, onde elas podem ser de qualquer valor para um Map.Map facilmente enquanto que para um Object, voc tem que obter manualmente o seu tamanho.Object tem um prottipo, ento existem chaves padro no mapa. (este pode ser ignorado usando map = Object.create(null)).Estes dois tipos podem ajudar voc a decidir se usa um Map ou um Object:
Objeto WeakMapO objeto WeakMap uma coleo de pares de chave/valor em que as chaves so somente objetos e seus valores podem ser valores arbitrrios. As referncias do objeto nas chaves so fracamente mantidas, isso significa que eles so alvo da garbage collection (coleta de lixo) se no houver nenhuma outra referncia para o objeto. A API WeakMap a mesma API do Map.
Uma diferena para objetos Map que chaves WeakMap no so enumerveis (isto , no h um mtodo que d a voc uma lista de chaves). Se eles fossem, a lista dependeria do estado da coleta de lixo, introduzindo um no-determinismo.
Para mais informaes e cdigo de exemplo, veja tambm "Por qu WeakMap?" na pgina de referncia WeakMap.
Um caso de uso de objetos WeakMap armazenar dados privados para um objeto ou ocultar detalhes de implementao. O exemplo a seguir Nick Fitzgerald a partir de um post "Ocultando detalhes de implementao com WeakMaps ECMAScript 6" em seu blog. Os dados privados e mtodos pertencem ao objeto e so armazenados nos objetos WeakMap privados. Tudo exposto na instncia e o prottipo pblico, todo o restante inacessvel a partir do mundo externo por que privado no exportado pelo mdulo.
const privates = new WeakMap();
function Public() {
const me = {
// Dados privados vem aqui
};
privates.set(this, me);
}
Public.prototype.method = function () {
const me = privates.get(this);
// Faa coisas com dado privado em `me`...
};
module.exports = Public;
Objeto SetObjetos Set so colees de valores. Voc pode iterar seus elementos em ordem de insero. Um valor em um Set s pode ocorrer uma vez; ele nico em uma coleo Set.
O cdigo a seguir mostra algumas operaes bsicas com um Set. Veja tambm a pgina de referncia Set para mais exemplos e a API completa.
var mySet = new Set();
mySet.add(1);
mySet.add("some text");
mySet.add("foo");
mySet.has(1); // true
mySet.delete("foo");
mySet.size; // 2
for (let item of mySet) console.log(item);
// 1
// "some text"
Voc pode criar um Array a partir de um Set usando Array.from ou o operador de propagao. Alm disso, o construtor Set aceita um Array para converter em outra direo. Observe novamente que objetos Set armazenam valores nicos, ento quaisquer elementos duplicados de um Array so excludos quando convertidos.
Array.from(mySet);
[...mySet2];
mySet2 = new Set([1, 2, 3, 4]);
Array e Set comparadosTradicionalmente, um conjunto de elementos tem sido armazenados em arrays JavaScript em muitas situaes. O novo objeto Set, contudo, tem algumas vantagens:
indexOf para arrays lento.Set permitem que voc exclua elementos por seu valor. Com um array voc teria que unir baseado no ndice do elemento.NaN no pode ser encontrado com indexOf no array.Set armazenam valores nicos, voc no tem que manter o controle de duplicidades manualmente por voc mesmo.Objeto WeakSetObjetos WeakSet so colees de objetos. Um objeto no WeakSet s pode ocorrer uma vez; Isto nico em colees WeakSet e objetos no so enumerveis.
As principais diferenas para objetos Set so:
Sets, WeakSets so apenas colees de objetos e no de valores arbritrios de qualquer tipo.WeakSet fraco: Referncias para objetos so fracamente realizadas na coleo. Se no h outra referncia para um objeto armazenado no WeakSet, eles podem ser coletados pelo coletor de lixo. Isso significa tambm que no h uma lista de objetos correntes armazenados na coleo. WeakSets no so enumerveis.Os casos de uso do objeto WeakSet so limitados. Eles no vo desperdiar memria para ser seguro o uso de elementos DOM como chaves e marc-los para propsitos de controle, por exemplo.
Map and SetAmbos, a igualdade de chaves de objetos Map e a igualdade de valor de objetos Set, so baseados no "algoritmo mesmo valor de zero":
===.-0 e +0 so considerados iguais.NaN considerado igual a ela mesmo (contrrio de ===).This page was last modified on 22 de mai. de 2026 by MDN contributors.
Your blueprint for a better internet.
Portions of this content are 19982026 by individual mozilla.org contributors. Content available under a Creative Commons license.
| Web Proxy Viewer | New URL | Original Page |