Difference Between indexOf and findIndex function of array
I am confused between the difference between the two function indexOf and find Index in an array.
The documentation says
findIndex - Returns the index of the first element in the array where predicate is true, and -1 otherwise.
and
indexOf - Returns the index of the first occurrence of a value in an array.
Solution 1:
The main difference are the parameters of these functions:
Array.prototype.indexOf()
expects a value as first parameter. This makes it a good choice to find the index in arrays of primitive types (like string, number, or boolean).Array.prototype.findIndex()
expects a callback as first parameter. Use this if you need the index in arrays with non-primitive types (e.g. objects) or your find condition is more complex than just a value.
See the links for examples of both cases.
Solution 2:
FindIndex is useful if you want to find the first element that matches to your predicate: In W3C's example, there are numbers and matches if the customer's age above or equals to 18.
var ages = [3, 10, 18, 20];
function checkAdult(age) {
return age >= 18;
}
console.log(ages.findIndex(checkAdult));
console:
2
You can find an exact element index with the indexOf function of Array, but you can't pass a predicate. It is faster if you want to find a specific element:
var ages = [3, 10, 18, 20];
console.log(ages.indexOf(10));
returns:
1
Index counting starts at 0, so the first element index is 0.