Разница между indexOf и функцией findIndex массива
Я путаюсь между разницей между двумя функциями indexOf и find Index в массиве.
В документации указано
findIndex - возвращает индекс первого элемента в массиве, где предикат является истинным и -1 в противном случае.
и
indexOf - возвращает индекс первого вхождения значения в массив.
Ответы
Ответ 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!
}