Подтвердить что ты не робот

Разница между indexOf и функцией findIndex массива

Я путаюсь между разницей между двумя функциями indexOf и find Index в массиве.

В документации указано

findIndex - возвращает индекс первого элемента в массиве, где предикат является истинным и -1 в противном случае.

и

indexOf - возвращает индекс первого вхождения значения в массив.

4b9b3361

Ответ 1

Основное отличие - это параметры этих функций:

  • Array.prototype.indexOf() ожидает значение как первый параметр. Это делает хороший выбор для поиска индекса в массивах примитивных типов.

  • Array.prototype.findIndex() ожидает обратного вызова в качестве первого параметра. Используйте это, если вам нужен индекс в массивах с не примитивными типами (например, объекты), или ваше условие поиска более сложное, чем просто значение.

См. ссылки для примеров обоих случаев.

Ответ 2

FindIndex полезен, если вы хотите найти первый элемент, который соответствует вашему предикату: в примере W3C есть числа и совпадения, если возраст клиента выше или равен 18.

var ages = [3, 10, 18, 20];

function checkAdult(age) {
    return age >= 18;
}

console.log(ages.findIndex(checkAdult));

Приставки:

2

Вы можете найти точный индекс элемента с функцией indexOf от Array, но вы не можете передать предикат. Это быстрее, если вы хотите найти определенный элемент:

var ages = [3, 10, 18, 20];
console.log(ages.indexOf(10));

возвращает:

1

Индексный счет начинается с 0, поэтому индекс первого элемента равен 0.

Ответ 3

Основное отличие - это параметры этих функций:

- > Array.prototype.indexOf():

   var fruits = ["Banana", "Orange", "Apple", "Mango"];
   var a = fruits.indexOf("Apple");
   The result of a will be: 2

- > Array.prototype.findIndex():

       var ages = [3, 10, 18, 20];

       function checkAdult(age) {
        return age >= 18;
       }

       function myFunction() {
         document.getElementById("demo").innerHTML = 
         ages.findIndex(checkAdult);
       }

       The result will be: 2

Ответ 4

Plese, который вы можете использовать, включает preffer indexOf

[1, 2, 3].includes(2);      // true
[1, 2, 3].includes(4);      // false
[1, 2, 3].includes(3, 3);   // false


var vals = [ "foo", "bar", 42, "baz" ];
if (~vals.indexOf( 42 )) {
// found it!
}