Карточка 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 ошибок.