Карта JavaScript

В этом руководстве вы узнаете о JavaScript Maps и WeakMaps с помощью примеров.

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

Карта похожа на объекты в JavaScript, что позволяет нам хранить элементы в паре ключ / значение .

Элементы на карте вставляются в порядке вставки. Однако, в отличие от объекта, карта может содержать в качестве ключа объекты, функции и другие типы данных.

Создать карту JavaScript

Для создания 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()метод, чтобы проверить, находится ли элемент на карте. Например,

 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 не повторяются

В отличие от карт, 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 Map и поддержку JavaScript WeakMap.

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