Mapa JavaScript

Neste tutorial, você aprenderá sobre JavaScript Maps e WeakMaps com a ajuda de exemplos.

O JavaScript ES6 introduziu duas novas estruturas de dados, ou seja, Mape WeakMap.

O mapa é semelhante a objetos em JavaScript que nos permite armazenar elementos em um par chave / valor .

Os elementos em um mapa são inseridos em uma ordem de inserção. No entanto, ao contrário de um objeto, um mapa pode conter objetos, funções e outros tipos de dados como chave.

Criar Mapa JavaScript

Para criar um Map, usamos o new Map()construtor. Por exemplo,

 // create a Map const map1 = new Map(); // an empty map console.log(map1); // Map ()

Inserir item no mapa

Depois de criar um mapa, você pode usar o set()método para inserir elementos nele. Por exemplo,

 // create a set let map1 = new Map(); // insert key-value pair map1.set('info', (name: 'Jack', age: 26)); console.log(map1); // Map ("info" => (name: "Jack", age: 26))

Você também pode usar objetos ou funções como teclas. Por exemplo,

 // Map with object key let map2 = new Map(); let obj = (); map2.set(obj, (name: 'Jack', age: "26")); console.log(map2); // Map (() => (name: "Jack", age: "26"))

Acessar elementos do mapa

Você pode acessar os Mapelementos usando o get()método. Por exemplo,

 let map1 = new Map(); map1.set('info', (name: 'Jack', age: "26")); // access the elements of a Map console.log(map1.get('info')); // (name: "Jack", age: "26")

Verifique os elementos do mapa

Você pode usar o has()método para verificar se o elemento está em um mapa. Por exemplo,

 const set1 = new Set((1, 2, 3)); let map1 = new Map(); map1.set('info', (name: 'Jack', age: "26")); // check if an element is in Set console.log(map1.has('info')); // true

Removendo Elementos

Você pode usar o clear()e o delete()método para remover elementos de um mapa.

O delete()método retorna truese um par chave / valor especificado existe e foi removido ou então retorna false. Por exemplo,

 let map1 = new Map(); map1.set('info', (name: 'Jack', age: "26")); // removing a particular element map1.delete('address'); // false console.log(map1); // Map ("info" => (name: "Jack", age: "26")) map1.delete('info'); // true console.log(map1); // Map ()

O clear()método remove todos os pares de chave / valor de um objeto Map. Por exemplo,

 let map1 = new Map(); map1.set('info', (name: 'Jack', age: "26")); // removing all element map1.clear(); // false console.log(map1); // Map ()

JavaScript Map Size

Você pode obter o número de elementos em um mapa usando a sizepropriedade. Por exemplo,

 let map1 = new Map(); map1.set('info', (name: 'Jack', age: "26")); console.log(map1.size); // 1

Iterar através de um mapa

Você pode iterar por meio dos elementos Map usando o método for … of loop ou forEach (). Os elementos são acessados ​​no pedido de inserção. Por exemplo,

 let map1 = new Map(); map1.set('name', 'Jack'); map1.set('age', '27'); // looping through Map for (let (key, value) of map1) ( console.log(key + '- ' + value); )

Resultado

 nome- Jack idade- 27

Você também pode obter os mesmos resultados do programa acima usando o forEach()método. Por exemplo,

 // using forEach method() let map1 = new Map(); map1.set('name', 'Jack'); map1.set('age', '27'); // looping through Map map1.forEach(function(value, key) ( console.log(key + '- ' + value) ))

Iterar sobre as chaves do mapa

Você pode iterar no Mapa e obter a chave usando o keys()método. Por exemplo,

 let map1 = new Map(); map1.set('name', 'Jack'); map1.set('age', '27'); // looping through the Map for (let key of map1.keys()) ( console.log(key) )

Resultado

 nome idade

Iterar sobre os valores do mapa

Você pode iterar no Mapa e obter os valores usando o values()método. Por exemplo,

 let map1 = new Map(); map1.set('name', 'Jack'); map1.set('age', '27'); // looping through the Map for (let values of map1.values()) ( console.log(values); )

Resultado

 Jack 27

Obter chave / valores do mapa

Você pode iterar no Mapa e obter a chave / valor de um Mapa usando o entries()método. Por exemplo,

 let map1 = new Map(); map1.set('name', 'Jack'); map1.set('age', '27'); // looping through the Map for (let elem of map1.entries()) ( console.log(`$(elem(0)): $(elem(1))`); )

Resultado

 nome: Jack idade: 27

Mapa de JavaScript vs Objeto

Mapa Objeto
Maps can contain objects and other data types as keys. Objects can only contain strings and symbols as keys.
Maps can be directly iterated and their value can be accessed. Objects can be iterated by accessing its keys.
The number of elements of a Map can be determined by size property. The number of elements of an object needs to be determined manually.
Map performs better for programs that require the addition or removal of elements frequently. Object does not perform well if the program requires the addition or removal of elements frequently.

JavaScript WeakMap

The WeakMap is similar to a Map. However, WeakMap can only contain objects as keys. For example,

 const weakMap = new WeakMap(); console.log(weakMap); // WeakMap () let obj = (); // adding object (element) to WeakMap weakMap.set(obj, 'hello'); console.log(weakMap); // WeakMap (() => "hello")

When you try to add other data types besides objects, WeakMap throws an error. For example,

 const weakMap = new WeakMap(); // adding string as a key to WeakMap weakMap.set('obj', 'hello');
 // throws error // TypeError: Attempted to set a non-object key in a WeakMap

WeakMap Methods

WeakMaps têm métodos get(), set(), delete(), e has(). Por exemplo,

 const weakMap = new WeakMap(); console.log(weakMap); // WeakMap () let obj = (); // adding object (element) to WeakMap weakMap.set(obj, 'hello'); console.log(weakMap); // WeakMap (() => "hello") // get the element of a WeakMap console.log(weakMap.get(obj)); // hello // check if an element is present in WeakMap console.log(weakMap.has(obj)); // true // delete the element of WeakMap console.log(weakMap.delete(obj)); // true console.log(weakMap); // WeakMap () 

WeakMaps não são iteráveis

Ao contrário do Maps, os WeakMaps não são iteráveis. Por exemplo,

 const weakMap = new WeakMap(); console.log(weakMap); // WeakMap () let obj = (); // adding object (element) to WeakMap weakMap.set(obj, 'hello'); // looping through WeakMap for (let i of weakMap) ( console.log(i); // TypeError )

JavaScript Mape WeakMapforam introduzidos no ES6 . Alguns navegadores podem não suportar seu uso. Para saber mais, visite JavaScript Map support e JavaScript WeakMap support.

Artigos interessantes...