Найти в Дзене
Retr0

Map and Set to JavaScript

Hi сегодня я вам расскажу о функциях выше, заварите себя чаёк и поехали Map Map – это коллекция ключ/значение, как и Object. Но основное отличие в том, что Map позволяет использовать ключи любого типа. Методы: Map может использовать объекты в качестве ключей Использование объектов в качестве ключей – это одна из известных и часто применяемых возможностей объекта Map. При строковых ключах обычный объект Object может подойти, но для ключей-объектов – уже нет. Перебор Map Для перебора обычно используют эти три команды let recipeMap = new Map([ ["огурец", 500], ["помидор", 350], ["лук", 50] ]); for (let vegetable of recipeMap.keys()) { alert(vegetable); } for (let amount of recipeMap.values()) { alert(amount);} for (let entry of recipeMap) { alert(entry);} Set Объект Set - это особый вид коллекции: «множество» значений (без ключей), где каждое значение может появляться только раз за все время. И методы эти является: Основная «изюминка» – это то, что при повторн
Оглавление

Hi сегодня я вам расскажу о функциях выше, заварите себя чаёк и поехали

Map

Map – это коллекция ключ/значение, как и Object. Но основное отличие в том, что Map позволяет использовать ключи любого типа.

Методы:

  1. new Map() - создает коллекцию
  2. map.get(key) - возвращает значение по значенью или undefined, если объект key отсутствует
  3. map.has(key) - возвращает тип true, если объект key присутствует в коллекции, иначе false
  4. map.set(key, value) - записывает по ключу key значение value
  5. map.delete(key) - удаляет элемент по объекту key
  6. map.clear() - очищает коллекцию от всех элементов
  7. map.size - возвращает текущее количество элементов

Map может использовать объекты в качестве ключей

Использование объектов в качестве ключей – это одна из известных и часто применяемых возможностей объекта Map. При строковых ключах обычный объект Object может подойти, но для ключей-объектов – уже нет.

Перебор Map

Для перебора обычно используют эти три команды

  1. map.keys() - возвращает итерируемый объект по ключам
  2. map.values() - возвращает итерируемый объект по значениям
  3. map.entries() - возвращает итерируемый объект по парам вида ключ, значение, этот вариант используется обычно for..of
let recipeMap = new Map([
["огурец", 500],
["помидор", 350],
["лук", 50]
]);
for (let vegetable of recipeMap.keys()) {
alert(vegetable);
}
for (let amount of recipeMap.values()) { alert(amount);}
for (let entry of recipeMap) { alert(entry);}

Set

Объект Set - это особый вид коллекции: «множество» значений (без ключей), где каждое значение может появляться только раз за все время.

И методы эти является:

  1. new Set(iterable) - создаёт Set, и если в качестве аргумента был предоставлен итерируемый объект (обычно это массив), то копирует его значения в новый Set
  2. set.add(value) - добавляет значение (если оно уже есть, то ничего не делает), возвращает тот же объект set
  3. set.delete(value) - удаляет значение, возращает true, если value было в множестве на момент вызова, иначе false
  4. set.clear() - удаляет все уже существуйщие ключи
  5. set.size - возвращает количество элементов
  6. set.has(value) - возвращает true, если значение присутствует в множестве, иначе false

Основная «изюминка» – это то, что при повторных вызовах set.add() с одним и тем же значением ничего не происходит, за счёт этого как раз и получается, что каждое значение появляется один раз.

Множество Set – как раз то, что нужно для этого

Альтернативой множеству Set может выступать массив для хранения гостей и дополнительный код для проверки уже имеющегося элемента с помощью arr.find. Но в этом случае будет хуже производительность, потому что arr.find проходит весь массив для проверки наличия элемента. Множество Set лучше оптимизировано для добавлений, оно автоматически проверяет на уникальность.

Перебор ключей Set

Мы можем также переберать содержимое set как с помощью for..of, так используя foreach

let set = new Set(["апельсин", "яблоко", "банан"]);
for (let value of set) alert(value);
forEach:set.forEach((value, valueAgain, set) => {
alert(value);
});

Это сделано для совместимости с объектом Map, в котором колбэк forEach имеет 3 аргумента. Выглядит немного странно, но в некоторых случаях может помочь легко заменить Map на Set и наоборот.

Set имеет такие же методы, что и map

А на этом все, всем спасибо, всем пока чао