Array.includes обычно требует линейного просмотра O(n). Set.has в типичной хеш-реализации работает в среднем за O(1), но создание Set тоже стоит времени и памяти.
Какова сложность поиска элемента в Set по сравнению с массивом?
Array.includes обычно требует линейного просмотра O(n). Set.has в типичной хеш-реализации работает в среднем за O(1), но создание Set тоже стоит времени и памяти.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Array.includes обычно требует линейного просмотра O(n). Set.has в типичной хеш-реализации работает в среднем за O(1), но создание Set тоже стоит времени и памяти.
ECMAScript требует для Set в среднем сублинейный доступ, а не гарантирует конкретную хеш-таблицу и O(1) в худшем случае. Для одной проверки маленького массива преобразование в Set может быть лишним; для множества проверок оно часто окупается.