Чотири різні способи пошуку масиву в JavaScript

У JavaScript існують різні методи, за допомогою яких можна шукати елемент у масиві. Який метод ви оберете, залежить від конкретного випадку використання.

Наприклад, ви хочете отримати всі елементи масиву, які відповідають певній умові? Хочете перевірити, чи відповідає якийсь предмет умові? Ви хочете перевірити, чи є в масиві певне значення? Або ви хочете знайти індекс значення в масиві?

Для всіх цих випадків використання описані методи Array.prototype JavaScript. У цій статті ми обговоримо чотири методи, які ми можемо використовувати для пошуку елемента в масиві. Ці методи:

  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

Синтаксис для масиву.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

Ви помітите різницю між цим методом та іншими методами, які ми розглядали. Цей метод приймає як аргумент значення, а не зворотний виклик. Ось синтаксис методу include:

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.