Проверяет понимание временной сложности операций поиска в Set и массиве, что важно для выбора структуры данных в JavaScript.
В JavaScript массивы и Set — это две разные структуры данных, предназначенные для хранения коллекций. Массив — упорядоченный список, доступ к элементам которого осуществляется по индексу. Set — коллекция уникальных значений, которая не гарантирует порядок, но обеспечивает быстрый поиск.
Когда вы ищете элемент в массиве по значению, например, с помощью метода includes() или indexOf(), JavaScript вынужден последовательно перебирать элементы, пока не найдёт совпадение. В худшем случае, если элемента нет или он находится в конце, потребуется проверить все n элементов. Поэтому временная сложность составляет O(n).
const arr = [1, 2, 3, 4, 5];
console.log(arr.includes(3)); // O(n) — перебор всех элементовSet внутри использует хеш-таблицу. При добавлении элемента вычисляется его хеш, и значение сохраняется в соответствующей ячейке. При поиске хеш вычисляется снова, и элемент находится напрямую, без перебора. Это даёт среднюю сложность O(1). Даже если возникают коллизии, они редки и обрабатываются эффективно.
const set = new Set([1, 2, 3, 4, 5]);
console.log(set.has(3)); // O(1) — прямое обращение по хешуЕсли вам нужно часто проверять наличие элемента в коллекции, например, при фильтрации дубликатов или проверке прав доступа, используйте Set. Для массивов, где важна последовательность и доступ по индексу, оставьте массив. В реальных проектах Set часто применяется для хранения уникальных идентификаторов, тегов или состояний.
Выбор между Set и массивом зависит от задачи: для операций поиска по значению Set даёт значительный выигрыш в производительности на больших данных, тогда как массив лучше подходит для упорядоченных коллекций с доступом по индексу.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию