Типичная ошибка при работе с большими массивами на фронтенде — поиск элементов через .includes() или .find() внутри фильтрации.
const blockedUserIds = [102, 405, 981, ...10000_items];
const allUsers = [...50000_items];
// ❌ ПЛОХО: O(N * M) — массив фильтруется очень долго
const activeUsers = allUsers.filter(user =>
!blockedUserIds.includes(user.id)
);
// ✅ БЫСТРО: O(N) — переводим список в Set
const blockedSet = new Set(blockedUserIds);
const activeUsers = allUsers.filter(user =>
!blockedSet.has(user.id) // Хеш-таблица: поиск за O(1)
);
Замена массива на Set с операцией .has() ускоряет фильтрацию больших списков в десятки раз за счет константного времени поиска $O(1)$