JavaScript-karta

I denna handledning lär du dig om JavaScript-kartor och WeakMaps med hjälp av exempel.

JavaScript ES6 har introducerat två nya datastrukturer, dvs Mapoch WeakMap.

Kartan liknar objekt i JavaScript som låter oss lagra element i ett nyckel / värdepar .

Elementen i en karta infogas i en infogningsordning. Till skillnad från ett objekt kan en karta dock innehålla objekt, funktioner och andra datatyper som nyckel.

Skapa JavaScript-karta

För att skapa en Mapanvänder vi new Map()konstruktören. Till exempel,

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

Infoga objekt till karta

När du har skapat en karta kan du använda set()metoden för att infoga element i den. Till exempel,

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

Du kan också använda objekt eller funktioner som tangenter. Till exempel,

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

Åtkomst till kartelement

Du kan komma åt Mapelement med get()metoden. Till exempel,

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

Kontrollera kartelement

Du kan använda has()metoden för att kontrollera om elementet finns på en karta. Till exempel,

 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

Ta bort element

Du kan använda clear()och delete()metoden för att ta bort element från en karta.

De delete()metoden returnerar trueom en angiven nyckel / värdeparet finns och har tagits bort eller annars avkastning false. Till exempel,

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

Den clear()metod tar bort alla nyckel / värde-par från en kart objekt. Till exempel,

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

JavaScript-kartstorlek

Du kan få antalet element på en karta med hjälp av sizefastigheten. Till exempel,

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

Iterera genom en karta

Du kan iterera genom kartelementen med metoden for … of loop eller forEach (). Elementen nås i införingsordningen. Till exempel,

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

Produktion

 namn- Jack ålder- 27

Du kan också få samma resultat som ovanstående program med forEach()metoden. Till exempel,

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

Iterera över kartnycklar

Du kan itera över kartan och få nyckeln med keys()metoden. Till exempel,

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

Produktion

 namn ålder

Iterera över kartvärden

Du kan itera över kartan och få värdena med values()metoden. Till exempel,

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

Produktion

 Jack 27

Få nyckel / värden på kartan

Du kan itera över kartan och få nyckeln / värdet på en karta med entries()metoden. Till exempel,

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

Produktion

 namn: Jack ålder: 27

JavaScript-karta mot objekt

Karta 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 har metoder get(), set(), delete(), och has(). Till exempel,

 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 är inte iterabla

Till skillnad från Maps är WeakMaps inte upprepas. Till exempel,

 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 Mapoch WeakMapintroducerades i ES6 . Vissa webbläsare stöder kanske inte deras användning. För att lära dig mer, besök JavaScript Map support och JavaScript WeakMap support.

Intressanta artiklar...