Методы поиска в массивах JavaScript

    Команда Simple-Server
    03.06.2026
    6 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Кратко о задаче

    indexOf — это**** функция поиска элемента в массиве. Этот метод с помощью перебора ищет искомый объект и возвращает его индекс или "-1", если не находит подходящий.

    Функция имеет такой синтаксис:

    Array.indexOf (search element, starting index)
    • Array — массив;
    • search element — элемент, который мы ищем;
    • starting index — индекс, с которого начинаем перебор. Необязательный аргумент, по умолчанию работа функции начинается с индекса “0”, т.е. метод проверяет весь Array. Если starting index больше или равен Array.length, то метод сразу возвращает “-1” и завершает работу.

    Если starting index отрицательный, то JS трактует это как смещение с конца массива: при starting index = “-1” будет проверен только последний элемент, при “-2” последние два и т.д.

    Опробуем метод на практике. Запустим такой код и проверим результаты его работы:

    let ExampleArray = [1,2,3,1,'5', null, false, NaN,3]; console.log("Позиция единицы", ExampleArray.indexOf(1) ); console.log("Позиция следующей единицы", ExampleArray.indexOf(1,2) ); console.log("Позиция тройки", ExampleArray.indexOf(3) ); console.log("Позиция тройки, если starting index отрицательный", ExampleArray.indexOf(3,-2) ); console.log("Позиция false", ExampleArray.indexOf(false) ); console.log("Позиция 5", ExampleArray.indexOf("5") );  console.log("Позиция NaN", ExampleArray.indexOf(NaN));

    В результате работы этого кода мы получили такой вывод:

    Позиция единицы 0 Позиция следующей единицы 3 Позиция тройки 2 Позиция тройки, если starting index отрицательный 8 Позиция false 6 Позиция 5 -1 Позиция NaN -1

    indexOf осуществляет поиск элемента в массиве слева направо и останавливает свою работу на первом совпавшем. Отчетливо это проявляется в примере с единицей. Для того, чтобы идти справа налево, используйте метод LastIndexOf с аналогичным синтаксисом.

    Для сравнения искомого и очередного объекта применяется строгое сравнение (===). При использовании строгого сравнения для разных типов данных, но с одинаковым значение, например 5, ‘5’ и “5” JavaScript даёт отрицательный результат, поэтому IndexOf не нашел 5.

    Также стоит помнить, что indexOf некорректно обрабатывает NaN. Так что для работы с этим значением нужно применять остальные методы.

    includes не совсем проводит поиск заданного элемента в массиве, а проверяет, есть ли он там вообще. Работает он примерно также как и indexOf. В конце работы includes возвращает «True», если нашел искомый объект, и «False», если нет. Также includes правильно обрабатывает NaN

    includes имеет следующий синтаксис:

    Array.includes (search element, starting index)
    • Array — массив;
    • search element — элемент, который мы ищем;
    • starting index — индекс, с которого начинаем перебор. Необязательный аргумент, по умолчанию работа функции начинается с индекса “0”, т.е. метод проверяет весь Array. Если starting index больше или равен Array.length, то метод сразу возвращает «False» и завершает работу.

    Если starting index отрицательный, то JS трактует это как смещение с конца массива: при starting index = “-1” будет проверен только последний элемент, при “-2” последние два и т.д.

    Немного изменим код из предыдущего примера и запустим его:

    let Example = [1,2,3,1,'5', null, false,NaN, 3]; console.log("Наличие единицы", Example.includes(1) ); console.log("Наличие следующей единицы", Example.includes(1,2) ); console.log("Наличие тройки", Example.includes(3) ); console.log("Наличие тройки, если starting index отрицательный", Example.includes(3,-1) ); console.log("Наличие false", Example.includes(false) ); console.log("Наличие 5", Example.includes(5) );  console.log("Наличие NaN", Example.includes(NaN)); Наличие единицы true Наличие следующей единицы true Наличие тройки true Наличие тройки, если starting index отрицательный true Наличие false true Наличие 5 false Наличие NaN true

    Для includes отсутствует альтернативная функция, которая проводит поиск по массиву js справа налево, которая, в общем-то, и не очень актуальна.

    Предположим, что нам нужно**** найти в массиве некий объект. Но мы хотим найти его не по значению, а по его свойству. Например, поиск числа в массиве со значением между 15 и 20. Как и прежде, мы можем воспользоваться перебором с помощью for, но это не слишком удобно. Для поиска с определенным условием в JavaScript существует метод find.

    Array.find(function(...){ //если элемент соответствует условиям (true), то функция возвращает его  и прекращает работу; //если ничего не найдено, то возвращает undefined })
    • Array — массив;
    • function(...) — функция, которая задает условия.

    Как и в прошлых примерах, напишем небольшой код и опробуем метод:

    let ExampleArray = ["Simple-Server", 55555, "Cloud", "облачный провайдер", "буквы"]; console.log(ExampleArray.find(element => element.length == 5))

    В этом примере мы искали строки с длиной в 5 символов. Для числовых типов данных длина не определена, поэтому 55555 не подходит. find находит первый элемент и возвращает его, поэтому «буквы» также не попали в результат работы нашей функции. Для того, чтобы найти несколько элементов, соответствующих некоторому условию, нужно использовать метод filter.

    Также не стоит забывать о методе findIndex. Он возвращает индекс подходящего элемента. Или -1, если его нет. В остальном он работает точно также, как и find.

    find ищет и возвращает первый попавшийся элемент, соответствующий условиям поиска. Для того, чтобы найти все такие элементы, необходимо использовать метод filter. Результат этой функции — массив (если ничего не найдено, то он будет пустым).

    Array.find(function(...){ //если элемент соответствует условиям (true), то добавляем его к конечному результату и продолжаем перебор; })
    • Array — массив;
    • function(...) — функция, которая задает условия.

    Представим следующую задачу: у нас есть список кубоидов (прямоугольных параллелепипедов) с длинами их граней и нам нужно вывести все кубоиды с определенным объемом. Напишем код, реализующий решение данной задачи:

    let ExampleArray = [ [10, 15, 8], [11, 12, 6], [5, 20, 1], [10, 10, 2], [16,2, 4] ]; console.log(ExampleArray.filter(element=> element[0]*element[1]*element[2]>300)) [ [ 10, 15, 8 ], [ 11, 12, 6 ] ]

    В этом примере мы нашли прямоугольные параллелепипеды с объемом больше 300. В целом, метод filter в JS позволяет реализовывать всевозможные условия для поиска.


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны