Проверяет понимание различий между Map и обычным объектом в JavaScript и причин существования отдельного типа Map.
В JavaScript обычный объект (Object) исторически использовался для хранения пар ключ-значение. Однако у него есть ограничения: ключи всегда преобразуются в строки, порядок свойств не всегда гарантирован, а операции с размером требуют дополнительных действий. Для решения этих проблем был введён тип Map.
// Использование Map
const map = new Map();
const objKey = { id: 1 };
map.set(objKey, 'value');
map.set('stringKey', 42);
console.log(map.size); // 2
console.log(map.get(objKey)); // 'value'
// Использование Object
const obj = {};
obj[objKey] = 'value'; // ключ станет строкой '[object Object]'
obj['stringKey'] = 42;
console.log(Object.keys(obj).length); // 2
console.log(obj[objKey]); // 'value' (но ключ преобразован)Map стоит применять, когда нужны сложные ключи (объекты, функции), гарантированный порядок вставки, частые операции добавления/удаления или требуется быстрое определение размера. Для простых строковых ключей и когда нужны встроенные методы объекта (например, toString), Object остаётся удобным.
Map предоставляет более предсказуемое и гибкое поведение для хранения пар ключ-значение, особенно в сценариях с нетривиальными ключами и частыми изменениями. Выбор между Map и Object зависит от конкретных требований: если нужны гарантии порядка и произвольные ключи — выбирайте Map, иначе Object может быть проще.