JavaScript карта

В този урок ще научите за JavaScript Maps и WeakMaps с помощта на примери.

JavaScript ES6 представи две нови структури от данни, т.е. Mapи WeakMap.

Map е подобен на обектите в JavaScript, което ни позволява да съхраняваме елементи в двойка ключ / стойност .

Елементите в Карта се вмъкват в ред за вмъкване. Въпреки това, за разлика от обект, картата може да съдържа обекти, функции и други типове данни като ключ.

Създайте JavaScript карта

За да създадем a Map, използваме new Map()конструктора. Например,

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

Вмъкване на елемент в картата

След като създадете карта, можете да използвате set()метода, за да вмъкнете елементи в нея. Например,

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

Можете също да използвате обекти или функции като ключове. Например,

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

Елементи на картата за достъп

Можете да получите достъп до Mapелементи, използвайки get()метода. Например,

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

Проверете елементите на картата

Можете да използвате has()метода, за да проверите дали елементът е в Map. Например,

 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

Премахване на елементи

Можете да използвате метода clear()и и delete()за премахване на елементи от карта.

На delete()връща метод true, ако съществува определен двойка ключ / стойност и е била премахната или друг възвращаемост false. Например,

 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()метод премахва всички двойки ключ / стойност от обект Карта. Например,

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

Размер на картата на JavaScript

Можете да получите броя на елементите в Карта, като използвате sizeсвойството. Например,

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

Итерация през карта

Можете да прегледате елементите на картата, използвайки метода for … of или forEach (). Елементите са достъпни в реда на вмъкване. Например,

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

Изход

 име- Джак възраст- 27

Можете също така да получите същите резултати като горната програма, използвайки forEach()метода. Например,

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

Итерация над ключовете на картата

Можете да прегледате картата и да получите ключа с помощта на keys()метода. Например,

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

Изход

 име възраст

Итерирайте над стойностите на картата

Можете да прегледате картата и да получите стойностите с помощта на values()метода. Например,

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

Изход

 Джак 27

Вземете ключ / стойности на картата

Можете да прегледате картата и да получите ключа / стойността на картата, използвайки entries()метода. Например,

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

Изход

 име: Джак възраст: 27

JavaScript карта срещу обект

Карта Обект
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 имат методи get(), set(), delete(), и has(). Например,

 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 не са итеративни

За разлика от Maps, WeakMaps не са итерируеми. Например,

 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 Mapи WeakMapбяха въведени в ES6 . Някои браузъри може да не поддържат тяхното използване. За да научите повече, посетете поддръжката на JavaScript карта и поддръжката на JavaScript WeakMap.

Интересни статии...