Использовал ли ты коллекции Map и Set в работе
Что проверяют
Пользуетесь ли вы коллекциями осознанно или по привычке пишете всё на объектах и массивах. Вопрос про опыт, поэтому нужны свои примеры, а следом спросят, когда Map лучше обычного объекта и как коллекции уживаются со state в React.
Как отвечать
Каркас: где применили, почему именно эта коллекция, какую проблему это сняло. Типичные фронтенд-сценарии:
Setвыбранных строк: в таблице с чекбоксами множество id даётhasза константное время вместоincludesпо массиву, а удаление обходится безfilter;- дедупликация:
[...new Set(tags)]для тегов или id из нескольких ответов API; Mapкак кэш или индекс: сущности по id после нормализации, ответы по ключу фильтра, счётчики по категориям;- обход дерева:
Setпосещённых узлов в меню или графе зависимостей.
Покажите, что знаете отличия от объекта: ключом Map может быть что угодно, включая объект и DOM-узел, порядок вставки сохраняется, размер есть в size, ключи из прототипа вроде constructor не мешают. Set сравнивает по SameValueZero: NaN равен себе, объекты сравниваются по ссылке. С ES2025 у Set есть union, intersection, difference. Для привязки данных к объекту без утечки есть WeakMap: он не мешает сборщику мусора удалить ключ.
Если коллекциями почти не пользовались, не придумывайте историю. Скажите, что писали на объектах, и объясните, где сейчас взяли бы Map или Set и почему. Это честнее и не разваливается на уточняющих вопросах.
Где спотыкаются
Мутируют коллекцию в state: selected.add(id) на том же объекте React не заметит. Нужна новая коллекция: new Set(prev).add(id).
Сохраняют Map через JSON.stringify и получают {}. Перед сериализацией нужен Object.fromEntries(map) или [...map].
Ждут, что Set уберёт дубли объектов с одинаковым содержимым. Он сравнивает ссылки, так что объекты дедуплицируют по ключу через Map.