Карточка Junior Разминка: короткие функции спрашивают часто обновлено
Set вместо includes
Вопрос
Почему в задачах на пересечение и поиск дублей используют Set, а не includes?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
Array.prototype.includes перебирает массив за O(n), а Set.has в среднем работает за O(1). Проверка внутри цикла через массив даёт O(n·m), через Set O(n + m).
Ответ
Array.prototype.includes перебирает массив за O(n), а Set.has в среднем работает за O(1). Проверка внутри цикла через массив даёт O(n·m), через Set O(n + m). Плюс [...new Set(arr)] убирает дубли одной строкой с сохранением порядка.
Разбор
Set сравнивает по SameValueZero: NaN находит сам себя, объекты сравниваются по ссылке.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.