Ebben az oktatóanyagban példák segítségével megismerheti a JavaScript és a WeakMaps térképeket.
A JavaScript ES6 két új adatstruktúrát vezetett be, azaz: Map
és WeakMap
.
A térkép hasonló a JavaScript-ben található objektumokhoz, amely lehetővé teszi számunkra, hogy elemeket tároljunk egy kulcs / érték párban.
A Map elemei beszúrási sorrendben kerülnek beillesztésre. Az objektumokkal ellentétben azonban a térkép objektumokat, függvényeket és egyéb adattípusokat tartalmazhat kulcsként.
Hozzon létre JavaScript-térképet
A létrehozásához Map
használjuk a new Map()
konstruktort. Például,
// create a Map const map1 = new Map(); // an empty map console.log(map1); // Map ()
Elem beszúrása a térképbe
Térkép létrehozása után a set()
módszer segítségével elemeket illeszthet be hozzá. Például,
// 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))
Objektumokat vagy funkciókat is használhat kulcsként. Például,
// 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"))
Hozzáférés a térképelemekhez
Az Map
elemekhez a get()
módszer segítségével férhet hozzá . Például,
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")
Ellenőrizze a Térkép elemeket
A has()
módszer segítségével ellenőrizheti, hogy az elem szerepel-e egy térképen. Például,
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
Elemek eltávolítása
A clear()
és a delete()
módszer segítségével eltávolíthatja az elemeket a térképről.
A delete()
metódus akkor tér vissza, true
ha egy megadott kulcs / érték pár létezik, és eltávolításra került, vagy pedig visszatér false
. Például,
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 ()
A clear()
módszer eltávolítja az összes kulcs / érték párot egy Térkép objektumból. Például,
let map1 = new Map(); map1.set('info', (name: 'Jack', age: "26")); // removing all element map1.clear(); // false console.log(map1); // Map ()
JavaScript térképméret
A tulajdonság segítségével megismerheti a Térkép elemei számát size
. Például,
let map1 = new Map(); map1.set('info', (name: 'Jack', age: "26")); console.log(map1.size); // 1
Iterál egy térképen keresztül
A Térkép elemeken keresztül iterálhat a for… of ciklus vagy a forEach () módszerrel. Az elemeket a beillesztési sorrendben lehet elérni. Például,
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); )
Kimenet
név- Jack életkora- 27
A forEach()
módszerrel ugyanazt az eredményt is elérheti, mint a fenti program . Például,
// 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) ))
Térképes kulcsok fölött iterál
Iterálhat a Map felett, és a keys()
módszerrel megszerezheti a kulcsot . Például,
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) )
Kimenet
név életkor
Térképes értékek ismétlése
Iterálhat a Térkép felett, és a values()
módszerrel megkaphatja az értékeket . Például,
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); )
Kimenet
Jack 27
Kap kulcs / értékek Map
Iterálhat a Térkép felett, és a entries()
módszer segítségével megszerezheti a Térkép kulcsát / értékét . Például,
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))`); )
Kimenet
név: Jack életkora: 27
JavaScript térkép vs objektum
Térkép | Tárgy |
---|---|
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 van módszerek get()
, set()
, delete()
, és a has()
. Például,
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 ()
A WeakMaps nem írható
A Maps-sel ellentétben a WeakMaps nem iterálható. Például,
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 )
JavaScriptet Map
és WeakMap
az ES6- ban vezették be . Egyes böngészők nem támogatják a használatukat. További információkért keresse fel a JavaScript Map és a Java WeakMap támogatást.