StudyCode
Новые коллекции ES6: Map для словарей с любыми ключами, Set для уникальных значений.
Map — коллекция пар ключ-значение, как обычный объект. Ключевые отличия:
| Map | Object | |
|---|---|---|
| Ключи | Любой тип | Только строки/Symbol |
| Порядок | Всегда сохраняется | Не гарантирован |
| Размер | map.size — O(1) | Object.keys(obj).length |
| Итерация | for...of, forEach | for...in, Object.keys |
const map = new Map();
// Добавить / обновить
map.set("ключ", "значение");
map.set(42, "число как ключ");
map.set({ id: 1 }, "объект как ключ");
// Получить
map.get("ключ"); // "значение"
// Проверить наличие
map.has("ключ"); // true
map.has("нет"); // false
// Размер
map.size; // 3
// Удалить
map.delete("ключ");
// Очистить
map.clear();const map = new Map([
["ru", "Россия"],
["us", "США"],
["de", "Германия"],
]);
map.get("ru"); // "Россия"// Map идеален для кеширования (мемоизации)
const cache = new Map();
function expensiveCalc(n) {
if (cache.has(n)) {
return cache.get(n);
}
const result = n * n; // представь тут что-то долгое
cache.set(n, result);
return result;
}
expensiveCalc(5); // считает: 25
expensiveCalc(5); // из кеша: 25 (быстро)
// Итерация по Map
const scores = new Map([["Аня", 95], ["Вася", 87]]);
for (const [name, score] of scores) {
console.log(`${name}: ${score}`);
}Нажми на метод — увидишь пример входных/выходных данных.