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

Array.prototype.findIndex (predFn):

  1. он принимает функцию прогнозирования в качестве аргумента и возвращает индекс первого найденного элемента и -1, если элемент не найден.
let a = [1,2,3,"4",4]
a.findIndex((d) => d == 4) // returns 3
a.find((d) => d === "2") // returns -1

Array.prototype.find (predFn)

  1. он ведет себя точно так же, как указано выше, только возвращает значение элемента, если он найден, и undefined, если не может найти элемент.
let a = [1,2,3,"4",4]
a.find((d) => d == 4) // returns "4"
a.find((d) => d === "3") // returns undefined

полифилл для поиска

Если вы внимательно посмотрите на две приведенные выше функции, они очень похожи на Array.filter, за исключением

  1. он возвращает только одно значение либо индекс, либо элемент и пустой массив для нулевого случая
Array.prototype.find = function(predictFn) {
     const arr = this; //captures the array
     const result = arr.filter(predictFn) //returning a first value 
     return result.length == 0 ? undefined : result[0]
}

выше - полифилл для find, аналогично тому, как вы можете написать полифилл и для findIndex.

в аналогичной зоне доступны другие функции, например, для indexOf и includes, вы можете прочитать о них здесь: https://hiraljs.medium.com/indexof-vs-includes-30ce7a356360

Когда дело доходит до использования, я нахожу includes чище и не буду использовать другие функции, пока у меня не появятся веские причины для их использования.