Mapa JavaScriptu

V tomto kurzu se na příkladech dozvíte o mapách JavaScriptu a WeakMaps.

JavaScript ES6 zavedla dva nové datové struktury, tedy Mapi WeakMap.

Mapa je podobná objektům v JavaScriptu, což nám umožňuje ukládat prvky do dvojice klíč / hodnota .

Prvky v Mapě jsou vloženy v pořadí vložení. Na rozdíl od objektu však mapa může jako klíč obsahovat objekty, funkce a další datové typy.

Vytvořte mapu JavaScriptu

K vytvoření a Mappoužijeme new Map()konstruktor. Například,

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

Vložte položku do mapy

Po vytvoření mapy můžete pomocí set()metody vložit do ní prvky. Napří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))

Jako klíče můžete také použít objekty nebo funkce. Napří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"))

Přístup k prvkům mapy

K Mapprvkům můžete přistupovat pomocí get()metody. Napří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")

Zkontrolujte prvky mapy

has()Metodu můžete použít ke kontrole, zda je prvek na mapě. Napří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

Odstranění prvků

Metodu clear()a můžete použít delete()k odebrání prvků z mapy.

Tyto delete()metoda vrátí truev případě, že pár je uvedeno klíč / hodnota existuje a byla odstraněna nebo také vrátí false. Napří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()Metoda odstraní všechny dvojice klíč / hodnota z objektu Map. Například,

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

Velikost mapy JavaScriptu

Počet prvků na mapě můžete získat pomocí sizevlastnosti. Například,

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

Iterovat skrz mapu

Prostřednictvím prvků Map můžete iterovat pomocí metody for… of loop nebo forEach (). K prvkům se přistupuje v pořadí vložení. Napří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ýstup

 jméno - Jack věk - 27

Pomocí této forEach()metody můžete také získat stejné výsledky jako výše uvedený program . Napří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) ))

Iterace nad mapovými klíči

Můžete iterovat přes mapu a získat klíč pomocí keys()metody. Napří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ýstup

 jméno věk

Iterace nad mapovými hodnotami

Můžete iterovat přes mapu a získat hodnoty pomocí values()metody. Napří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ýstup

 Jack 27

Získejte klíč / hodnoty mapy

Mapu můžete iterovat a pomocí entries()metody získat klíč / hodnotu mapy . Napří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ýstup

 jméno: Jack věk: 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í metody get(), set(), delete()a has(). Napří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 nejsou iterovatelné

Na rozdíl od Map nejsou WeakMaps iterovatelné. Napří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 WeakMapbyly zavedeny v ES6 . Některé prohlížeče nemusí jejich použití podporovat. Chcete-li se dozvědět více, navštivte podporu JavaScript Map a podporu JavaScript WeakMap.

Zajímavé články...