Mapa JavaScriptu

V tomto výučbe sa pomocou príkladov dozviete o mapách JavaScript a WeakMaps.

JavaScript ES6 zaviedol dve nové dátové štruktúry, Mapa to WeakMap.

Mapa je podobná objektom v JavaScripte, ktorý nám umožňuje ukladať prvky do dvojice kľúč / hodnota .

Prvky na mape sa vkladajú v poradí vloženia. Na rozdiel od objektu však mapa môže obsahovať ako kľúč objekty, funkcie a ďalšie dátové typy.

Vytvorte mapu JavaScript

Na vytvorenie a Mappoužijeme new Map()konštruktor. Napríklad,

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

Vložte položku do mapy

Po vytvorení mapy môžete pomocou tejto set()metódy vložiť do nej prvky. Napríklad,

 // 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))

Ako kľúče môžete tiež použiť objekty alebo funkcie. Napríklad,

 // 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"))

Prístup k prvkom mapy

K Mapprvkom môžete získať prístup pomocou tejto get()metódy. Napríklad,

 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")

Skontrolujte prvky mapy

Pomocou tejto has()metódy môžete skontrolovať, či je prvok na mape. Napríklad,

 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

Odstraňovanie prvkov

Môžete použiť clear()aj na delete()spôsob, aby sa odstránili prvky z mapy.

Tieto delete()metóda vráti truev prípade, že pár je uvedené kľúč / hodnota existuje a bola odstránená alebo tiež vráti false. Napríklad,

 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 ()

clear()Metóda odstráni všetky dvojice kľúč / hodnota z objektu Map. Napríklad,

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

Veľkosť mapy JavaScriptu

Počet prvkov na mape môžete získať pomocou sizevlastnosti. Napríklad,

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

Iterácia mapou

Môžete iterovať cez prvky Mapy pomocou metódy for … of loop alebo forEach (). K prvkom sa pristupuje v poradí vloženia. Napríklad,

 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); )

Výkon

 meno- Jack vek- 27

Pomocou tejto forEach()metódy môžete tiež získať rovnaké výsledky ako vyššie uvedený program . Napríklad,

 // 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) ))

Iterácia nad mapovými kľúčmi

Môžete iterovať po mape a získať kľúč pomocou tejto keys()metódy. Napríklad,

 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) )

Výkon

 vek mena

Iterácia nad mapovými hodnotami

Môžete iterovať po mape a získať hodnoty pomocou values()metódy. Napríklad,

 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); )

Výkon

 Jack 27

Získajte kľúčové / hodnoty mapy

Môžete iterovať po mape a pomocou tejto entries()metódy získať kľúč / hodnotu mapy . Napríklad,

 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))`); )

Výkon

 meno: Jack vek: 27

Mapa JavaScript vs Objekt

Mapa Objekt
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 majú metódy get(), set(), delete()a has(). Napríklad,

 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 nie sú opakovateľné

Na rozdiel od máp nie sú WeakMaps iterovateľné. Napríklad,

 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 Mapa WeakMapboli zavedené v ES6 . Niektoré prehliadače nemusia podporovať ich použitie. Ak sa chcete dozvedieť viac, navštívte podporu JavaScript Map a podporu JavaScript WeakMap.

Zaujímavé články...