Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: map, key, reference

Может ли Map использовать любые типы данных в качестве ключей?

Вопрос проверяет понимание структуры Map, различий с обычным объектом и принципа сравнения ключей по ссылке.

Короткий ответ

Да, Map может использовать любое значение в качестве ключа: примитивы, объекты, массивы, функции. В отличие от обычного объекта, ключи в Map не приводятся к строке. Для объектов и функций сравнение ключей происходит по ссылке, а не по содержимому. Это делает Map удобным для хранения данных, привязанных к конкретным объектам.

Длинный ответ

Map — это коллекция пар ключ–значение, где ключом может быть любой тип данных без неявных преобразований.

Определение

Map — структура данных, которая хранит пары ключ–значение и сравнивает ключи по принципу SameValueZero (почти как ===, но с NaN).

Какие типы могут быть ключами

  1. Примитивы:

    • string

    • number

    • boolean

    • null

    • undefined

    • symbol

  2. Ссылочные типы:

    • object

    • array

    • function

Пример с примитивами

const map = new Map();

map.set("id", 1);
map.set(42, "answer");

console.log(map.get("id")); // 1
console.log(map.get(42));   // "answer"

Ключи-объекты и сравнение по ссылке

const map = new Map();

const user = { name: "Ann" };
map.set(user, "data");

console.log(map.get(user)); // "data"
console.log(map.get({ name: "Ann" })); // undefined

Почему так

  1. Объекты сравниваются по ссылке, а не по структуре.

  2. Даже одинаковые по содержимому объекты — разные ключи, если это разные ссылки.

Отличие от обычного объекта

  1. В объекте ключи всегда приводятся к строке.

  2. В Map ключ сохраняет исходный тип.

  3. Map безопасен для ключей-объектов и не конфликтует с прототипом.

Пример проблемы с объектом

const obj = {};
const key = { a: 1 };

obj[key] = "value";
console.log(obj); // { "[object Object]": "value" }

Вывод

Map может использовать любые типы данных как ключи и особенно полезен, когда ключами должны быть объекты или функции и важно сохранить их идентичность по ссылке.

Уровень

  • Рейтинг:

    5

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#map

#key

#reference

Подпишись на React Developer в телеграм