Mapa JavaScript

W tym samouczku dowiesz się o mapach JavaScript i WeakMaps przy pomocy przykładów.

Kod JavaScript ES6 wprowadziła dwie nowe struktury danych, IE Mapi WeakMap.

Mapa jest podobna do obiektów w JavaScript, które pozwalają nam przechowywać elementy w parze klucz / wartość .

Elementy mapy są wstawiane w kolejności reklamowej. Jednak w przeciwieństwie do obiektu mapa może zawierać jako klucz obiekty, funkcje i inne typy danych.

Utwórz mapę JavaScript

Aby stworzyć plik Map, używamy new Map()konstruktora. Na przykład,

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

Wstaw element do mapy

Po utworzeniu mapy możesz użyć set()metody, aby wstawić do niej elementy. Na przykład,

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

Możesz także używać obiektów lub funkcji jako klawiszy. Na przykład,

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

Dostęp do elementów mapy

Możesz uzyskać dostęp do Mapelementów za pomocą get()metody. Na przykład,

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

Sprawdź elementy mapy

Możesz użyć tej has()metody, aby sprawdzić, czy element znajduje się w Map. Na przykład,

 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

Usuwanie elementów

Można użyć clear(), a delete()metody, aby usunąć elementy z mapy.

Te delete()metody powraca truejeśli określona parę klucz / wartość istnieje i została usunięta albo powraca false. Na przykład,

 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 usuwa wszystkie pary klucz / wartość z obiektu mapy. Na przykład,

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

Rozmiar mapy JavaScript

Możesz uzyskać liczbę elementów w mapie za pomocą sizewłaściwości. Na przykład,

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

Iteruj po mapie

Elementy Map można iterować za pomocą pętli for… of lub metody forEach (). Elementy są dostępne w kolejności reklamowej. Na przykład,

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

Wynik

 imię- Jack wiek- 27

Możesz również uzyskać takie same wyniki, jak powyższy program, używając forEach()metody. Na przykład,

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

Iteruj po kluczach mapy

Możesz iterować po mapie i uzyskać klucz za pomocą keys()metody. Na przykład,

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

Wynik

 imię Wiek

Iteruj po wartościach mapy

Możesz iterować po Mapie i uzyskać wartości za pomocą values()metody. Na przykład,

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

Wynik

 Jack 27

Uzyskaj klucz / wartości mapy

Możesz iterować po mapie i uzyskać klucz / wartość mapy przy użyciu entries()metody. Na przykład,

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

Wynik

 imię: Jack wiek: 27

Mapa JavaScript a obiekt

Mapa Obiekt
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(), i has(). Na przykład,

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

WeakMapy nie są iterowalne

W przeciwieństwie do Map, WeakMapy nie są iterowalne. Na przykład,

 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 Mapi WeakMapzostały wprowadzone w ES6 . Niektóre przeglądarki mogą nie obsługiwać ich użycia. Aby dowiedzieć się więcej, odwiedź stronę Obsługa map JavaScript i Obsługa JavaScript WeakMap.

Interesujące artykuły...