Map
Map
– это коллекция ключ/значение, в котором ключ может быть любого типа.
Map
можно представить как массив массивов, где в каждом подмассиве два значения. Первое - это ключ (key). Второе - значение (value).
const map = [
['1', 'John'],
[{ 2: Michael }, 'name'],
];
к сведению
Перебор Map
и Set
всегда осуществляется в порядке добавления элементов, так что нельзя сказать, что это – неупорядоченные коллекции, но поменять порядок элементов или получить элемент напрямую по его номеру нельзя.
Создание Map
new Map
и добавление ключ/значение через метод set
:
const map = new Map();
map.set('1', 'str'); // строка в качестве ключа
map.set(1, 'num'); // цифра как ключ
map.set(true, 'bool'); // булево значение как ключ
new Map
и массив из массивов ключ/значение:
const map = new Map([
['огурец', 500],
['помидор', 350],
['лук', 50],
]);
Map
из Object
(Object.entries
):
const obj = {
name: 'John',
age: 30,
};
const map = new Map(Object.entries(obj));
Методы и свойства
new Map()
– создаёт коллекцию.map.set(key, value)
– записывает по ключуkey
значениеvalue
.map.get(key)
– возвращает значение по ключу илиundefined
, если ключkey
отсутствует.map.has(key)
– возвращаетtrue
, если ключkey
присутствует в коллекции, иначеfalse
.map.delete(key)
– удаляет элемент (пару «ключ/значение») по ключуkey
и возвращает булево значение.map.clear()
– очищает коллекцию от всех элементов.map.size
– возвращает текущее количество элементов.
Перебор Map
map.keys()
– возвращает итерируемый объект по ключам,map.values()
– возвращает итерируемый объект по значениям,map.entries()
– возвращает итерируемый объект по парам вида[ключ, значение]
, этот вариант используется по умолчанию вfor..of
.
for (let [key, value] of map) {
console.log(key, value);
}
// Другой вариант
for (let entry of map) {
const key = entry[0];
const value = entry[1];
}
Создание Object
из Map
const map = new Map([
['banana', 1],
['orange', 2],
['meat', 4],
]);
const obj = Object.fromEntries(map.entries());
// Более короткая запись. Метод entries вызвается по умолчанию.
const obj = Object.fromEntries(map);
Создание Array
из Map
const map = new Map([
['banana', 1],
['orange', 2],
['meat', 4],
]);
const array = [...map];
// Другой вариант
const array = Array.from(map);