Перейти к содержимому

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

  • автор:

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

Массив — это тип данных, который может содержать несколько значений в одной переменной. Это будет отличным решением при наличии списка разных элементов, которые хотите хранить. Сортировка разных элементов также помогает при поиске. Знание основных операций массивов важно для улучшения ваших навыков программирования. Рассмотрим пример массива:

Пример

html> html> body> h2>Массивы JavaScript h2> p id="demo"> p> script> var flowers = ["rose", "daisy", "lily"]; document.getElementById("demo").innerHTML = flowers; script> body> html>

Довольно часто нам может понадобится проверить наличие элемента в массиве JavaScript. В этой статье мы расскажем о подобных методах.

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

var array = [11, 20, 8, 6, 17]; var el = 6; //Element to be searched for(var i=0; ilength; i++) < if(el === array[i]) < console.log('Element Found'); > >

Как видите массив переходит из index 0 в array.length — 1 index. Он работает следующим образом: в условном операторе if мы проверяем, равен ли элемент в массиве значению элемента в поиске. Если это так, печатаем ‘Element found’.

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

var array = [11, 20, 8, 6, 17]; var el = 6; //Element to be searched var flag = 0; // Initially 0 - Not found for(var i=0; ilength; i++) < if(el === array[i]) < flag = 1; > > //Check if flag value changed. if(flag == 1) < console.log('Element Found'); > else < console.log('Element Not Found'); >

Если элемент найден, значение flag будет изменен внутри условного оператора if, и именно таким образом мы можем сделать проверку на наличие элемента.

Теперь рассмотрим другой метод проверки, который сегодня часто используется. Этот метод называется includes().

Данный метод возвращает true, если массив содержит указанный элемент, а в противном случае — false:

var array = [11, 20, 8, 6, 17]; console.log( array.includes(6) ); //True

Рассмотрим другой пример:

Пример

html> html> body> h1>Array includes() h1> p>Проверьте, содержит ли массив "Daisy": p> p id="demo"> p> p>strong>Note: strong> Метод includes не поддерживается в Edge 13 (и более старых версиях). p> script> var fruits = ["Rose", "Daisy", "Lily", "Jasmine"]; var n = flowers.includes("Daisy"); document.getElementById("demo").innerHTML = n; script> body> html>

Метод includes() чувствителен к регистру.

Есть еще один полезный метод. Метод indexOf method используется, чтобы найти индекс элемента массива. Он указывает, содержит ли массив указанный элемент. Если указанный элемент найден в методе JavaScript indexOf, он возвращает номер индекса данного элемента. Если элемент не найден, indexOf возвращает значение -1. Код будет иметь такой вид:

var myArray = ["Rose", "Lily", "Daisy", "Jasmine"]; if (myArray.indexOf(searchTerm) === -1) < console.log("element doesn't exist"); > else < console.log("element found"); >

Эти два метода имеют два параметра: element и start.

Параметр Описание
element Необходимый параметр. Элемент, который хотим найти.
start Дополнительный параметр. По умолчанию — 0. Указывает, с какой позиции в массиве начать поиск.

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

Нужно воспользоваться методом includes() для объектов-прототипов Array . Метод includes() может принимать два параметра. Первым параметром всегда будет искомый элемент. После выполнения возвращает true или false.

Например, у нас есть массив:

var massiv = [44, 555, 6666, 7]
Проверяем наличие в массиве числа 333: massiv.includes(333) --Результат-- false
Проверяем наличие в массиве числа 555: massiv.includes(555) --Результат-- true

Пример работы метода includes - JavaScript

Информационные ссылки

Стандарт ECMAScript — Раздел «23.1.3.13 Array.prototype.includes ( searchElement [ , fromIndex ] )» — https://tc39.es/ecma262/#sec-array.prototype.includes

Вам также может понравиться

ECMAScript | Модульная Запись Среды | Метод DeleteBinding ( N )

Опубликовано 22.04.2021

ECMAScript | Модульная Запись Среды | Метод DeleteBinding ( N )

DeleteBinding ( N ) Конкретный метод DeleteBinding (Удалить привязку), модульной записи среды никогда не используется в этой спецификации. Примечание Записи среды модуля […]

document.getElementsByTagName(«em»)

Опубликовано 07.11.2020

document.getElementsByTagName(«em»)

Команда document.getElementsByTagName(«em») возвращает HTML-коллекцию HTML-элементов со страницы (документа). Элементы коллекции тянут за собой всех потомков. Забор данных осуществляется в древовидном порядке, […]

document.getElementsByTagName(«b»)

Опубликовано 06.11.2020

document.getElementsByTagName(«b»)

Команда document.getElementsByTagName(«b») возвращает HTML-коллекцию HTML-элементов со страницы (документа). Элементы коллекции тянут за собой всех потомков. Забор данных осуществляется в древовидном порядке, […]

ECMAScript | Тип Undefined

Опубликовано 15.09.2021

ECMAScript | Тип Undefined

Тип Undefined имеет ровно одно значение, называемое undefined. Любая переменная, которой не было присвоено значение, имеет значение undefined. Информационные ссылки Стандарт […]

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

edward_freedom

Но имхо — лучше решить проблему с повреждением данных, чем пытаться вот так её заигнорировать.

А ещё у вас код странный — в результате всегда получается массив из пяти нулей

Zimaell @Zimaell Автор вопроса

edward_freedom, кто сказал что я их читал?
Некоторые еще говорят что я пропускал занятия на парах в институте. хотя у меня нет высшего образования.
Тем не менее мне все это не помешало веб программированием заниматься около 10 лет и нормально зарабатывать.
А сейчас вот переключился игры делать, так же не чтение книг мне не помешало сделать игру на unity.
Все возможно, 21 век на дворе как никак.

Zimaell @Zimaell Автор вопроса
Василий Банников, 1 элемент это уровень от 1 до 200, остальное 0 или 1.
это кусок кода из метода.

vabka

Василий Банников @vabka Куратор тега C#

кто сказал что я их читал?
Некоторые еще говорят что я пропускал занятия на парах в институте. хотя у меня нет высшего образования.
Тем не менее мне все это не помешало веб программированием заниматься около 10 лет и нормально зарабатывать.
А сейчас вот переключился игры делать, так же не чтение книг мне не помешало сделать игру на unity.
Все возможно, 21 век на дворе как никак.

Сейчас бы хвастаться своим невежеством, лол.
10 лет опыта и не можете цикл с условием написать, и пишете код, который даже стажёры не пишут. Это просто смешно

Zimaell @Zimaell Автор вопроса

Василий Банников, так я же писал на других языках, в PHP было гораздо проще.
Просто я не думаю что для данной проверки нужно цикл вообще задействовать, неужели нет что-то типа if(empty(.

Сейчас бы хвастаться своим невежеством, лол.

Не поймите меня неправильно, просто не люблю тех кто любит похвастаться образованием или количеством прочитанных книг но в итоге по теме ничего не ответить.
Из оперы — «А погуглить пробовал» или «Ой у тебя в куча ошибок в тексте».
Сколько пишу и всегда в итоге находил решения, может сам, может на форумах направляли в правильном (иногда неправильном направлении), но суть в том что всегда доделывал то что хотел.
А времени у меня вагон и тележка.

P.s. — Это было сказано не в обиду, не подумайте, просто такое впечатление что некоторым делать нечего чем «поиздеваться» над новичками которые еще не знают какой-то информации.
P.p.s — Не хочешь отвечать или лень, человек не нравится. пройди просто мимо и всё.

Извините кофе сегодня перепил. бомбануло.

vabka

Василий Банников @vabka Куратор тега C#

Zimaell, в том и прикол, что if(empty есть. И таки да — если у вас реальный опыт 10 лет — вы просто обязаны быть мастером гугла.

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

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

const collection = ['something', 'hexlet', 'something else']; const isHexletInCollection = collection.includes('hexlet'); console.log(isHexletInCollection); // => true 

08 сентября 2022

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

const collection = ['something', 'hexlet', 'something else']; const isHexletInCollection = arr.indexOf('hexlet') != -1; console.log(isHexletInCollection); // => true 

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 вернулся индекс совпадающего значения, после второго индекса (но опять же не от начала массива, а от его конца).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *