JavaScript Set.has() — чи є значення в множині
Метод has() перевіряє, чи є значення в множині, і повертає true або false.
Загальний опис
Це найсильніша сторона Set. array.includes() перебирає масив з початку — і що більший масив, то повільніше. has() працює однаково швидко незалежно від розміру.
На десятку значень різниці не помітно. На десятках тисяч (перевірка «чи є слово в словнику», «чи заблокований цей id») — різниця стає різницею між миттєво й помітно.
автор: NagarD
- Порада
-
Робиш багато перевірок «чи є в списку» — перетвори масив на
автор: NagarDSetодин раз перед циклом. Це найдешевша оптимізація в JavaScript.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| 38 | 13 | 8 | 25 | 12 | 11 |
| Переглядач | ||||
|---|---|---|---|---|
| 38 | 38 | 14 | 8 |
| Переглядач | ||
|---|---|---|
| 0.12.0 | 1.0 |
Приклади
+ запропонувати свій приклад у пісочниці
Швидка перевірка входження замість перебору масиву.
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']
Коментарі
Коментарів ще немає — будьте першим!