Map

Map появился в ES6 и представляет собой набор данных, которые хранятся как "Ключ-Значение".


const map = new Map();

map.set(1, "Барсик");

//Map(1) {1 => "Барсик"}

Отношения между ключом и значением отображается через =>.

Продолжить добавление сразу нескольких элементов можно цепочкой.


map.set(2, "Мурзик").set(3, "Рыжик");

Получить значение можно по ключу через метод get().


map.get(3);

Наличие ключа можно проверить через метод has().


map.has(4); // false

Количество ключей можно узнать через свойство size:


map.size;

Map можно также создать через вложенный массив.


const heroes = new Map([ ['Clark Kent','Superman'], ['Bruce Wayne', 'Batman']]);

Удалить ключ с его значением можно через метод delete(), указав нужный ключ. Если удаление произошло, то вернётся true, иначе false.


map.delete(1);

Чтобы удалить сразу все ключи со значениями, то вызывайте метод clear().


map.clear();

Сконвертировать Map в массив можно через оператор spread.


const array = [...map];

Другой способ - использовать метод Array.from():


const catArray = Array.from(map);

При помощи for-of можно пройтись по ключам или по значениям.


const map = new Map();

map.set(1, "Барсик");
map.set(2, "Мурзик").set(3, "Рыжик");

for(const key of map.keys()){
    console.log(key);
}

for(const value of map.values()){
    console.log(value);
}

Если хотим сразу получить ключи и значения, то используем метод entries().


map.set(1, "Барсик").set(2, "Мурзик").set(3, "Рыжик");
for(const [key, value] of map.entries()){
    console.log(`${key}: ${value}`);
}

WeakMap

Нельзя использовать примитивные типы, это вызовет ошибку. Можем добавить массивы или объекты.


const weak = new WeakMap();

Перебор for-of невозможен.

Реклама