Как проверить есть ли элемент в массиве js

Аватар пользователя Roman Ashikov
Roman Ashikov
28 октября 2021

Для этого в JS существует метод includes(), который работает на массивах. Метод includes() принимает два аргумента, один из которых обязательный. Это искомый элемент. После выполнения метод возвращает true или false в зависимости от того, есть элемент в массиве или нет. Ниже я привёл пример использования данного метода:

const collection = ['something', 'hexlet', 'something else'];
const isHexletInCollection = collection.includes('hexlet');
console.log(isHexletInCollection); // => true
0 0
Аватар пользователя Aleksandr Litvinov
Aleksandr Litvinov
08 сентября 2022

Для поиска элемента в массиве можно использовать метод indexOf(), если элемент не найден, он возвращает -1, если найден — индекс элемента:

const collection = ['something', 'hexlet', 'something else'];
const isHexletInCollection = arr.indexOf('hexlet') != -1;
console.log(isHexletInCollection); // => true
0 0
Аватар пользователя Виктория Аблаева
Виктория Аблаева
18 октября 2022

Для того, чтобы проверить, есть ли элемент в массиве, могут помочь не только стандартные методы, о которых писали выше. К примеру, есть библиотека Lodash, в которой присутствуют методы для поиска элементов в массиве.

Метод _.indexOf()

Этот метод устроен достаточно хитро, его можно использовать в двух вариантах:

  • Первый вариант использования:
const numbers = [1, 2, 1, 2];
const findNumber = 2;
const findIndex = _.indexOf(numbers, findNumber); // => 1
//В переменной findIndex окажется число 1 (индекс искомого элемента). 
//Если число 2 бы не нашлось, что в переменную findIndex было бы присвоено -1.

Как видно из примера выше, метод нашёл тот элемент, который встретился первым. Но, что делать, если в данном массиве есть и другие элементы, которые равны искомому?
Здесь начинается самое интересное. Данный метод может найти элемент, который равен искомому, но после определенного индекса.

  • Второй вариант использования:
const numbers = [1, 2, 1, 2];
const findNumber = 2;
const indexAfter = 2;
const findIndex = _.indexOf(numbers, findNumber, indexAfter); // => 3
// Ищем число 2 после индекса 2. В итоге в переменной оказалось число 3. 
//Почему? 3 - индекс искомого числа, который встретился после второго индекса.

Если вдруг вам нужно выполнить поиск элемента массива не слева направо, а наоборот, в библиотеке Lodash найдётся и такой метод.
Он работает ровно зеркально методу _.indexOf().

Метод _.lastIndexOf()

  • Первый вариант использования:
const numbers = [1, 2, 1, 2];
const findNumber = 2;
const findIndex = _.lastIndexOf(numbers, findNumber); // => 3

В переменную findIndex вернулся индекс совпадающего значения, но не от начала массива, а от его конца.

  • Второй вариант использования:
const numbers = [1, 2, 1, 2];
const findNumber = 2;
const indexAfter = 2;
const findIndex = _.lastIndexOf(numbers, findNumber, indexAfter); // => 1

В переменную findIndex вернулся индекс совпадающего значения, после второго индекса (но опять же не от начала массива, а от его конца).

Документация:

_.indexOf()
_.lastIndexOf()

0 0

Есть что добавить? Зарегистрируйтесь

или войдите в аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Курсы по программированию в Хекслете

Программирование

Веб-разработка

Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков

Frontend-разработка

Разработка внешнего интерфейса сайтов и веб-приложений и верстка

Создание сайтов

Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails

Backend-разработка

Разработка серверной части сайтов и веб-приложений

Тестирование

Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP

Аналитика данных

Сбор, анализ и интерпретация данных на Python

Интенсивные курсы

Интенсивное обучение для продолжающих

DevOps

Автоматизация настройки локального окружения и серверов, развертывания и деплоя

Математика для программистов

Обучение разделам математики, которые будут полезны при изучении программирования

JavaScript

Разработка сайтов и веб-приложений и автоматизированное тестирование на JS

Тест-драйв

Python

Веб-разработка, автоматическое тестирование и аналитика данных на Python

Java

Веб-разработка и автоматическое тестирование на Java

PHP

Веб-разработка и автоматическое тестирование на PHP

Ruby

Разработка сайтов и веб-приложений на Ruby on Rails

Go

Курсы по веб-разработке на языке Go

Верстка

HTML

Современная верстка с помощью HTML и CSS

SQL

Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД

Git

Система управления версиями Git, регулярные выражения и основы командой строки

Бесплатные курсы

Бесплатные курсы по тестированию, дата-аналитике, верстке, программированию на Python, Java, PHP и JavaScript.

Базы данных

Фреймворки