> Что такое Map и Set в JavaScript (JavaScript)
Уровень: junior · Роль: mobile · Категория: Технические вопросы
Компании: Юрент
Стек: JavaScript
> Пример ответа
Короткий ответ
Map и Set - это встроенные коллекции в JavaScript. Map хранит пары "ключ-значение", где ключом может быть любое значение (включая объекты и функции), а Set хранит уникальные значения любого типа. Обе структуры появились в ES6 и предоставляют методы для добавления, удаления и проверки наличия элементов. В отличие от обычных объектов, Map сохраняет порядок вставки и имеет удобный метод size для получения количества элементов.
Подробное объяснение
Map - это коллекция пар "ключ-значение". Основное отличие от обычного объекта:
- ключом может быть любой тип данных (объект, функция,
NaN,undefined) - порядок элементов сохраняется в порядке вставки
- есть встроенное свойство
size - методы
get,set,has,delete,clearработают предсказуемо
Set - это коллекция уникальных значений. Полезен, когда нужно гарантировать отсутствие дубликатов. При добавлении значения, которое уже есть в Set, оно игнорируется. Порядок элементов также сохраняется.
Основные методы обеих структур:
add(для Set) иset(для Map) - добавлениеhas- проверка наличияdelete- удалениеclear- очисткаsize- количество элементов
Обе структуры являются итерируемыми, поэтому их можно использовать с for...of, forEach, spread-оператором.
На практике
В мобильной разработке (например, React Native) Map и Set часто используются для:
- хранения кэша данных с ключами-объектами
- отслеживания уникальных идентификаторов элементов списков
- реализации логики "выбрано/не выбрано" без дубликатов
- хранения временных данных с быстрым доступом по ключу
Важно помнить, что Map и Set имеют сложность операций O(1) для добавления, удаления и поиска, что делает их эффективными для больших коллекций.
Пример кода
JAVASCRIPT// Mapconst userMap = new Map();const userObj = { id: 1 };userMap.set(userObj, 'Алексей');userMap.set('name', 'Мария');userMap.set(42, 'число');console.log(userMap.get(userObj)); // 'Алексей'console.log(userMap.has(42)); // trueconsole.log(userMap.size); // 3userMap.forEach((value, key) => {console.log(key, value);});// Setconst uniqueIds = new Set();uniqueIds.add(1);uniqueIds.add(2);uniqueIds.add(1); // дубликат, будет проигнорированconsole.log(uniqueIds.size); // 2console.log(uniqueIds.has(2)); // trueuniqueIds.delete(1);console.log([...uniqueIds]); // [2]
Как отвечать на собеседовании
Начни с краткого определения, затем приведи пример использования. Покажи понимание отличий от обычных объектов и массивов. Упомяни, что Map удобен для хранения данных с ключами-объектами, а Set - для гарантии уникальности. Если спросят про производительность, скажи, что обе структуры дают O(1) для основных операций. Не углубляйся в сложные сценарии, если не просят.
Что проверяет интервьюер
Интервьюер проверяет:
- знание базовых структур данных в JavaScript
- понимание отличий Map от Object и Set от Array
- умение применять эти структуры в реальных задачах
- знание методов и итерации по коллекциям
Типичные ошибки
- путать Map с Object и пытаться использовать
map.keyвместоmap.get(key) - забывать, что Set хранит только уникальные значения
- использовать
lengthвместоsize - не знать, что ключом Map может быть объект, а ключом Object - только строка или символ
- забывать, что Map и Set итерируемы, и пытаться использовать
Object.keys()
> Похожие задачи по mobile
Какие механизмы синхронизации существуют для решения проблем многопоточности
Что такое кэш и как он работает
Что такое ViewModel во Vue и как он работает
Что такое ViewModel во Vue и как он работает
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью