PassFront
  1. PassFront
  2. База знаний
  3. Основы языка

Какие методы поиска в 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);   // -1

includes

Возвращает 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) перебора массива).

Другие вопросы раздела