„JavaScript“ žemėlapis

Šioje pamokoje su pavyzdžių pagalba sužinosite apie „JavaScript“ žemėlapius ir „WeakMaps“.

„JavaScript ES6 “ pristatė dvi naujas duomenų struktūras, ty Mapir WeakMap.

Žemėlapis yra panašus į „JavaScript“ objektus, leidžiančius elementus laikyti raktų / reikšmių poroje.

Žemėlapio elementai įterpiami įterpimo tvarka. Tačiau, skirtingai nei objektas, žemėlapyje gali būti objektai, funkcijos ir kiti duomenų tipai kaip raktas.

Sukurkite „JavaScript“ žemėlapį

Norėdami sukurti a Map, mes naudojame new Map()konstruktorių. Pavyzdžiui,

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

Įterpti elementą į žemėlapį

Sukūrę žemėlapį, galite naudoti set()metodą į jį įterpdami elementus. Pavyzdžiui,

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

Taip pat galite naudoti objektus ar funkcijas kaip raktus. Pavyzdžiui,

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

Prieiga prie žemėlapio elementų

MapPrie elementų galite prisijungti naudodami get()metodą. Pavyzdžiui,

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

Patikrinkite žemėlapio elementus

has()Metodą galite naudoti norėdami patikrinti, ar elementas yra žemėlapyje. Pavyzdžiui,

 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

Elementų pašalinimas

Norėdami pašalinti elementus iš žemėlapio, galite naudoti clear()ir delete()metodą.

Į delete()metodas grąžina true, jei nenurodyta raktas / vertė pora egzistuoja ir buvo ištrintas arba dar grįžta false. Pavyzdžiui,

 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()Metodas pašalina visus pagrindinius / vertės poras iš žemėlapio objektą. Pavyzdžiui,

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

„JavaScript“ žemėlapio dydis

Elementų skaičių žemėlapyje galite gauti naudodamiesi sizenuosavybe. Pavyzdžiui,

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

Kartoti per žemėlapį

Galite kartoti per žemėlapio elementus naudodami „for… of loop“ arba „forEach“ () metodą. Elementai pasiekiami įterpimo tvarka. Pavyzdžiui,

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

Rezultatas

 vardas- Džeko amžius- 27 metai

Naudodami forEach()metodą taip pat galite gauti tuos pačius rezultatus kaip pirmiau nurodyta programa . Pavyzdžiui,

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

Kartoti per žemėlapio raktus

Galite kartoti žemėlapį ir gauti raktą naudodami keys()metodą. Pavyzdžiui,

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

Rezultatas

 vardo amžius

Kartoti virš žemėlapio vertybių

Galite kartoti žemėlapį ir gauti reikšmes naudodami values()metodą. Pavyzdžiui,

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

Rezultatas

 Džekas 27

Gaukite žemėlapio raktus / vertes

Galite kartoti žemėlapį ir gauti žemėlapio raktą / vertę naudodami entries()metodą. Pavyzdžiui,

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

Rezultatas

 vardas: Džeko amžius: 27

„JavaScript“ žemėlapis vs objektas

Žemėlapis Objektas
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 turi metodai get(), set(), delete(), ir has(). Pavyzdžiui,

 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ėra kartojami

Skirtingai nei Žemėlapiai, „WeakMaps“ nėra kartojami. Pavyzdžiui,

 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“ Mapir WeakMapbuvo pristatyti ES6 . Kai kurios naršyklės gali nepalaikyti jų naudojimo. Norėdami sužinoti daugiau, apsilankykite „JavaScript Map“ palaikymo ir „JavaScript WeakMap“ palaikymo tarnybose.

Įdomios straipsniai...