Методы Map в JavaScript
new Map()
Можно передать массив в метод new Map()
Конструктор используется для создания Map:
например
// Создание Map const fruits = new Map([ ["apples", 500], ["bananas", 300], ["oranges", 200] ]);
Map.get()
можно использовать get()
Метод получает значение ключа из Map:
например
fruits.get("apples");
Map.set()
можно использовать set()
Метод добавляет элемент в Map:
например
// Создание Map const fruits = new Map(); // установить значение Map fruits.set("apples", 500); fruits.set("bananas", 300); fruits.set("oranges", 200);
set()
Метод также можно использовать для изменения существующего значения Map:
например
fruits.set("apples", 500);
Map.size
size
Свойство возвращает количество элементов в Map:
например
fruits.size;
Map.delete()
delete()
Метод удаляет один элемент из Map:
например
fruits.delete("apples");
Map.clear()
clear()
Метод удаляет все элементы из Map:
например
fruits.clear();
Map.has()
Если ключ существует в Map:has()
Метод возвращает true:
например
fruits.has("apples");
Попробуйте следующий код:
fruits.delete("apples"); fruits.has("apples");
Map.forEach()
forEach()
Метод вызывает回调-функцию для каждого ключ-значение в Map:
например
// вывести все элементы let text = ""; fruits.forEach(function(value, key) { text += key + ' = ' + value; });
Map.entries()
entries()
Метод возвращает объект, содержащий [key, value] объект итератора:
например
// вывести все элементы let text = ""; for (const x of fruits.entries()) { text += x; }
Map.keys()
keys()
Метод возвращает объект итератора, содержащий ключи из Map:
например
// вывести все ключи let text = ""; for (const x of fruits.keys()) { text += x; }
Map.values()
values()
метод возвращает объект итератора, содержащий значения из Map:
например
// Вывод всех значений let text = ""; for (const x of fruits.values()) { text += x; }
можно использовать values()
метод суммирует значения в Map:
например
// Суммирование всех значений let total = 0; for (const x of fruits.values()) { total += x; }
Объекты в качестве ключей
Совет:Возможность использовать объекты в качестве ключей — важная характеристика Map.
например
// Создание объектов const apples = {name: 'Apples'}; const bananas = {name: 'Bananas'}; const oranges = {name: 'Oranges'}; // Создание Map const fruits = new Map(); // Добавление нового элемента в Map fruits.set(apples, 500); fruits.set(bananas, 300); fruits.set(oranges, 200);
注意:ключ — это объект (apples), а не строка ("apples"):
например
fruits.get("apples"); // Возвращает undefined
JavaScript Map.groupBy()
ES2024 добавил в JavaScript Map.groupBy()
метод.
Map.groupBy()
метод группирует элементы объекта по возвращаемому строковому значению обратной функции.
Map.groupBy()
метод не изменяет исходный объект.
например
// Создание массива const fruits = [ {name: "apples", quantity: 300}, {name: "bananas", quantity: 500}, {name: "oranges", quantity: 200}, {name: "kiwi", quantity: 150} ]; // Обратная функция для группировки function myCallback({ quantity }) { return quantity > 200 ? "ok" : "low"; } // Группировка по количеству const result = Map.groupBy(fruits, myCallback);
Поддержка браузерами
Map.groupBy()
Это функция ES2024.
С марта 2024 года все новые браузеры поддерживают эту функцию:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 117 | Edge 117 | Firefox 119 | Safari 17.4 | Opera 103 |
Сентябрь 2023 года | Сентябрь 2023 года | Октябрь 2023 года | Октябрь 2024 года | Май 2023 года |
Предупреждение:
Особенности ES2024 относительно новые.
В старых браузерах может потребоваться код замены (Polyfill).
Разница между Object.groupBy() и Map.groupBy()
Object.groupBy()
и Map.groupBy()
Разница заключается в:
Object.groupBy()
Группировка элементов в объект JavaScript.
Map.groupBy()
Группировка элементов в объект Map.
Полное руководство по Map
Для полной справки обратитесь к нашему:Руководство JavaScript Map.
Эта книга содержит описания и примеры всех свойств и методов Map.