Какие методы поиска в JS важны на практике и чем они отличаются?
Основы языка
Методы поиска в JS: `indexOf`/`lastIndexOf`, `includes`, `find`/`findIndex`, `filter`, а для объектов/структур — `Map.get`/`Set.has`. Различаются тем, что возвращают и по чему ищут.
Методы поиска в массиве
indexOf / lastIndexOf
Возвращают индекс значения (или -1); поиск по строгому равенству:
[1, 2, 3].indexOf(2); // 1
[1, 2, 3].indexOf(5); // -1includes
Возвращает boolean (есть ли значение):
[1, 2, 3].includes(2); // trueПроще для проверки наличия; работает с NaN (в отличие от indexOf).
find / findIndex
Поиск по условию (предикату), возвращают элемент/индекс:
users.find((u) => u.id === 5); // объект
users.findIndex((u) => u.id === 5); // индексДля поиска объектов по свойству.
filter
Возвращает все подходящие (новый массив):
users.filter((u) => u.active); // все активныеsome / every
Boolean: есть ли хоть один / все ли подходят.
Поиск в структурах
Map.get / Set.has — O(1)
map.get(key); // значение по ключу за O(1)
set.has(x); // наличие за O(1)Быстрее перебора массива (O(n)) для частых проверок.
Сравнение и выбор
- Индекс значения → indexOf.
- Наличие значения → includes.
- Поиск по условию → find/findIndex.
- Все подходящие → filter.
- Частый доступ/проверка → Map/Set (O(1)).
Коротко для собеседования
Методы поиска: indexOf/lastIndexOf (индекс значения), includes (boolean наличия, работает с NaN), find/findIndex (по условию — объект/индекс), filter (все подходящие), some/every (boolean). Для частых проверок/доступа — Map.get/Set.has (O(1) против O(n) перебора массива).