JavaScript Set.has() — чи є значення в множині
Метод has() перевіряє, чи є значення в множині, і повертає true або false.
Загальний опис
Це найсильніша сторона Set. array.includes() перебирає масив з початку — і що більший масив, то повільніше. has() працює однаково швидко незалежно від розміру.
На десятку значень різниці не помітно. На десятках тисяч (перевірка «чи є слово в словнику», «чи заблокований цей id») — різниця стає різницею між миттєво й помітно.
автор: NagarD
- Порада
-
Робиш багато перевірок «чи є в списку» — перетвори масив на
автор: NagarDSetодин раз перед циклом. Це найдешевша оптимізація в JavaScript.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| has | 38+ | 13+ | 8+ | 25+ | 12+ | 11+ |
| Переглядач | ||||
|---|---|---|---|---|
| has | 38+ | yes | yes | 8+ |
Приклади
+ запропонувати свій приклад у пісочниці
Швидка перевірка входження замість перебору масиву.
const blocked = new Set(['spam', 'bot', 'test']);
console.log(blocked.has('bot')); // true — миттєво
// у масиві та сама перевірка повільна на великих обсягах:
// blockedArray.includes(name)
const allowedList = ['oleh', 'lesia', 'marko'];
const users = [{ name: 'oleh' }, { name: 'bot' }, { name: 'lesia' }];
// перетворили ОДИН раз — далі всі перевірки миттєві
const allowed = new Set(allowedList);
const clean = users.filter(user => allowed.has(user.name));
console.log(clean.map(user => user.name)); // ['oleh', 'lesia']
Коментарі
Коментарів ще немає — будьте першим!