How to solve find is not a function error in JavaScript
In this tutorial, we are going to learn about how to solve the TypeError: find is not a function in JavaScript
When we use a Array.find()
method on a value which is not an data type array we will get the following error in our console.
Example:
const arr= {
a: 1,
b: 2,
c: 3
};
arr.find(el => el > 1 );
Output:
"TypeError: arr.find is not a function
In the example above, we are getting the error because we using the find()
method on a object.The find()
method is only available on arrays.
To solve the error, we need to make sure to call the find() method on a valid array.
Here is an example:
const arr = [1, 2, 3];
const result = arr.find(el => el > 1 );;
console.log(result); //Output -> [2]
Note: The find()
method returns the first element from the array which passes the test condition.
If you’re getting the error when working with a HTML collection then convert the HMTL collection to a array before calling find()
method on it.
const elements = document.getElementsByClassName("container");
[...elements].find(el => el.style.color === "red");
We can also check, if the given value is an type array or not before calling the find()
method on it.So that, we can avoid the runtime errors.
var arr = [1, 2, 3];
if(Array.isArray(arr)){
arr.find(el => el < 3);
}else{
console.log("Given data is not an array")
}
The Array.isArray()
takes the variable as an argument and returns true, if the given variable is a valid array otherwise it will return false.
In the above example, we have passed a number to the Array.isArray()
method. So, it returns false and executed the ‘else’ case and logs the “Given data is not an array” message in the console.
Conclusion
The “find is not a function” error occurs, when we call a find() method on a value which is not array. To solve the error convert the value to an array before calling the find() method on it or make sure to use the find() method on a valid arrays.