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}`);
}
Нельзя использовать примитивные типы, это вызовет ошибку. Можем добавить массивы или объекты.
const weak = new WeakMap();
Перебор for-of невозможен.