How to solve filter is not a function in JavaScript
In this tutorial, we are going to learn about how to solve the TypeError: filter is not a function in JavaScript
When we use a Array.filter()
method on a value which is not an data type array we will get the following error in our console.
Example:
const obj= {
a: 1,
b: 2,
c: 3
};
obj.filter(el => el < 3 );
Output:
"TypeError: obj.filter is not a function
In the example above, we are getting the error because we using the filter()
method on a object.
To solve the error, make sure to call the filter() method on a data type array.
Here is an example:
const arr = [2, 3, 4];
const result = arr.filter(el=> el < 3);
console.log(result); //Output -> [2]
Note: The filter()
method creates a new with the values that 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 filter()
method on it.
const elements = document.getElementsByClassName("container");
[...elements].filter(el => el.style.color === "red");
We can also check, if the given value is an type array or not before calling the filter()
method on it.So that, we can avoid the runtime errors.
var arr = [1, 2, 3];
if(Array.isArray(arr)){
arr.filter(el => el < 3);
}else{
console.log("Given data is not an array")
}
Conclusion
The “filter is not a function” error occurs, when we call a filter() method on a value which is not array. To solve the error convert the value to an array before calling the filter() method on it or make sure to use the filter() method on valid arrays.