Выбор ответа Middle Массивы и хеш-таблицы обновлено
Объект или Map для частот
Вопрос
Считаем частоты элементов массива, где встречаются и числа, и строки (1 и "1" разные значения). Что выбрать?
const freq = {};
for (const x of [1, '1', 1]) freq[x] = (freq[x] || 0) + 1;
console.log(freq); // ?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Map: ключ любого типа, 1 и "1" различаются. У объекта ключи приводятся к строке, поэтому 1 и "1" попадут в одну ячейку.
Варианты ответа
- Обычный объект
{}: ключи сохраняют исходный тип Set: он хранит количество повторов каждого значенияWeakMap: он быстрее для примитивных ключейMap: ключ любого типа,1и"1"различаютсяправильный ответ
Разбор
У объекта ключи приводятся к строке, поэтому 1 и "1" попадут в одну ячейку. Map сравнивает ключи по SameValueZero, типы различаются.
- Объект не сохраняет тип ключа.
Setхранит только факт наличия.WeakMapпринимает в ключи только объекты (и незарегистрированные символы), примитивы нельзя.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.