Четыре разных способа поиска в массиве в JavaScript

В JavaScript есть разные методы, которые можно использовать для поиска элемента в массиве. Какой метод вы выберете, зависит от вашего конкретного варианта использования.

Например, вы хотите получить все элементы в массиве, соответствующие определенному условию? Вы хотите проверить, соответствует ли какой-либо предмет условию? Вы хотите проверить, есть ли в массиве конкретное значение? Или вы хотите найти индекс значения в массиве?

Для всех этих случаев использования методы JavaScript Array.prototype помогут вам. В этой статье мы обсудим четыре метода, которые мы можем использовать для поиска элемента в массиве. Вот эти методы:

  1. Фильтр
  2. найти
  3. Включает в себя
  4. Индекс чего-либо

Давайте обсудим каждую из них.

Array.filter ()

Мы можем использовать метод Array.filter () для поиска элементов в массиве, удовлетворяющих определенному условию. Например, если мы хотим получить все элементы в массиве чисел больше 10, мы можем сделать это:

const array = [10, 11, 3, 20, 5]; const greaterThanTen = array.filter(element => element > 10); console.log(greaterThanTen) //[11, 20]

Синтаксис использования метода array.filter () следующий:

let newArray = array.filter(callback);

где

  • newArray это новый массив, который возвращается
  • array это массив, для которого вызывается метод фильтра
  • callback это функция обратного вызова, которая применяется к каждому элементу массива

Если ни один элемент в массиве не соответствует условию, возвращается пустой массив. Вы можете узнать больше об этом методе здесь.

Бывают случаи, когда нам не нужны все элементы, отвечающие определенному условию. Нам нужен только один элемент, соответствующий условию. В этом случае вам понадобится метод find ().

Array.find ()

Мы используем метод Array.find (), чтобы найти первый элемент, удовлетворяющий определенному условию. Как и метод фильтра, он принимает обратный вызов в качестве аргумента и возвращает первый элемент, который соответствует условию обратного вызова.

Давайте воспользуемся методом find для массива в нашем примере выше.

const array = [10, 11, 3, 20, 5]; const greaterThanTen = array.find(element => element > 10); console.log(greaterThanTen)//11

Синтаксис array.find ():

let element = array.find(callback);

Обратный вызов - это функция, которая выполняется для каждого значения в массиве и принимает три аргумента:

  • element - повторяемый элемент (обязательно)
  • index - индекс / позиция текущего элемента (необязательно)
  • array- массив, который findбыл вызван (необязательно)

Однако обратите внимание, что если ни один элемент в массиве не удовлетворяет условию, он возвращается undefined.

Что, если вы хотите проверить, находится ли определенный элемент в массиве? Как ты делаешь это?

Array.includes ()

Метод includes () определяет, включает ли массив определенное значение, и, при необходимости, возвращает true или false.

Итак, в приведенном выше примере, если мы хотим проверить, является ли 20 одним из элементов массива, мы можем сделать это:

const array = [10, 11, 3, 20, 5]; const includesTwenty = array.includes(20); console.log(includesTwenty)//true

Вы заметите разницу между этим методом и другими методами, которые мы рассмотрели. Этот метод принимает в качестве аргумента значение, а не обратный вызов. Вот синтаксис для метода includes:

const includesValue = array.includes(valueToFind, fromIndex)

куда

  • valueToFind - это значение, которое вы проверяете в массиве (обязательно), и
  • fromIndex это индекс или позиция в массиве, с которой вы хотите начать поиск элемента (необязательно)

Чтобы получить представление об индексе, давайте еще раз обратимся к нашему примеру. Если мы хотим проверить, содержит ли массив 10 в других позициях, кроме первого элемента, мы можем сделать это:

const array = [10, 11, 3, 20, 5]; const includesTenTwice = array.includes(10, 1); console.log(includesTenTwice)//false

Array.indexOf ()

Метод indexOf () возвращает первый индекс, по которому данный элемент может быть найден в массиве. Он возвращает -1, если элемент не существует в массиве.

Вернемся к нашему примеру. Найдем в массиве индекс 3.

const array = [10, 11, 3, 20, 5]; const indexOfThree = array.indexOf(3); console.log(indexOfThree)//2

Его синтаксис аналогичен синтаксису includesметода.

const indexOfElement = array.indexOf(element, fromIndex)

куда

  • element это элемент, который вы проверяете в массиве (обязательно), и
  • fromIndex это индекс или позиция в массиве, с которой вы хотите начать поиск элемента (необязательно)

Важно отметить , что как includesи indexOfметоды использования строгого равенства ( «===») для поиска массива. Если значения относятся к разным типам (например, «4» и «4»), они вернут falseи -1соответственно.

Резюме

With these array methods, you don't need to use a for loop to search an array. Depending on what you need, you can decide which of the methods is best suited for your use case.

Here is a summary of when to use each method:

  • Use filter if you want to find all items in an array that meet a specific condition.
  • Use find if you want to check if that at least one item meets a specific condition.
  • Use includes if you want to check if an array contains a particular value.
  • Use indexOf if you want to find the index of a particular item in an array.

Want to get notified when I publish a new article? Click here.