indexOf() The indexOf() method returns the first index at which a given element can be found in the array, or -1 if it is not present.
The only difference is that includes checks if you've passed it a regular expression instead of a string, and throws an exception if you have. indexOf will accept a regular expression but always return -1, which isn't too helpful.
Differences and Summary. Find() will return the value of the first element based on the provided condition and returns undefined if none of the elements passed the condition. FindIndex() will return the index of the first element based on the condition and returns -1 if none of the elements passed the condition.
Introduction to the JavaScript array indexOf() methodTo find the position of an element in an array, you use the indexOf() method. This method returns the index of the first occurrence the element that you want to find, or -1 if the element is not found.
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.
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.
Simple - What kind of array structure are you using?
findIndex()
; indexOf()
."I want to find the index in an array of objects, with the key of "Orange".
let fruits = [
{ type: "Apple", quantity: 9 },
{ type: "Banana", quantity: 2},
{ type: "Orange", quantity: 8},
{ type: "Pear", quantity: 777}
];
let myIndex = fruits.findIndex(fruit => fruit.type === "Orange"); // Returns 2.
"I want to find the index in a simple array".
let fruits = [ "Apple", "Banana", "Pear", "Orange"];
let index = fruits.indexOf("Orange"); // Returns 3.
Another difference is that with findIndex() the user can apply some function and find the element in the array which passes the test.
But the same is not true with indexOf() operator. A user can just check whether the particular element exists in the array or not.
The main difference are the parameters of these functions:
-> 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
You can also use includes
:
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, 3].includes(3, 3); // false
but I prefer the indexOf
method:
var vals = [ "foo", "bar", 42, "baz" ];
if (~vals.indexOf( 42 )) {
// found it!
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With