Четири различни начина за търсене в масив в 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

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

let element = array.find(callback);

Обратното извикване е функцията, която се изпълнява за всяка стойност в масива и отнема три аргумента:

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

Имайте предвид обаче, че ако нито един елемент в масива не отговаря на условието, той се връща undefined.

Ами ако все пак искате да проверите дали даден елемент е в масив? Как се прави това?

Array.includes ()

Методът include () определя дали масивът включва определена стойност и връща вярно или невярно според случая.

Така че в горния пример, ако искаме да проверим дали 20 е един от елементите в масива, можем да направим това:

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

Ще забележите разлика между този метод и другите методи, които разгледахме. Този метод приема стойност, а не обратно извикване като аргумент. Ето синтаксиса на метода включва:

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.