TypeError: includes is not a function in JavaScript [Solved]

avatar
Borislav Hadzhiev

Last updated: Mar 2, 2024
3 min

banner

# TypeError: includes is not a function in JavaScript

The "TypeError: includes is not a function" error occurs when the includes() method is called on a value that is not of type string or array.

To solve the error, convert the value to a string or array before calling the method or make sure to only call the includes() method on strings or arrays.

typeerror includes is not a function

Here is an example of how the error occurs.

index.js
const str = 1234; // ⛔️ Uncaught TypeError: str.includes is not a function const result = str.includes('3');

includes is not a function

We called the includes method on a number which caused the error.

The includes() method is only available on strings and arrays.

# Convert the value to a String or Array before using includes()

To solve the error, convert the value to a string or an array before calling the method, or only call the method if the value is of the correct type.

index.js
// ✅ Convert to a String before using includes() const num = 1234; const result1 = String(num).includes('3'); console.log(result1); // 👉️ true if (result1) { console.log('is contained'); } else { console.log('is NOT contained'); } // ---------------------------------------------------- // ✅ Convert to an Array before using includes() const set = new Set(['a', 'b', 'c']); const result2 = Array.from(set).includes('b'); console.log(result2); // 👉️ true if (result2) { console.log('is contained'); } else { console.log('is not contained'); }

convert value to string or array before using includes

The code for this article is available on GitHub

The first example uses the String() constructor to convert the value to a string before using the includes() method.

In the second example, we used the Array.from() method to convert a Set to an array before using the includes() method.

# Conditionally check if the value is an array before using includes()

Alternatively, you can conditionally check if the value is of the correct type before calling the includes method.

index.js
// ✅ check if the value is a String before using includes() const num = 1234; const result1 = typeof num === 'string' ? num.includes('3') : false; console.log(result1); // 👉️ false // -------------------------------------------- // ✅ check if the value is an Array before using includes() const set = new Set(['a', 'b', 'c']); const result2 = Array.isArray(set) ? set.includes('b') : false; console.log(result2); // 👉️ false

conditionally check if value is an array before using includes

The code for this article is available on GitHub

We used the ternary operator which is very similar to an if/else statement.

If the expression to the left of the question mark evaluates to a truthy value, the value to the left of the colon is returned, otherwise, the value to the right is returned.

You can also use a simple if statement to achieve the same result.

index.js
// ✅ check if the value is a String before using includes() const num = 1234; let result1 = false; if (typeof num === 'string') { result1 = num.includes('3'); console.log(result1); } console.log(result1); // 👉️ false // -------------------------------------------- // ✅ check if the value is an Array before using includes() const set = new Set(['a', 'b', 'c']); let result2 = false; if (Array.isArray(set)) { result2 = set.includes('b'); } console.log(result2); // 👉️ false
The code for this article is available on GitHub

In the first example, we check if the value has a type of string. If it does, we return the result of calling the includes() method, otherwise, we return false.

In the second example, we check if the value is an array using the Array.isArray() method.

If the value is an array, we return the result of calling the includes() method, otherwise, we return false.

If the error persists, console.log the value you're calling the includes method on and make sure it's either of type string or array.

If you have an object, there is a very good chance you have to access a specific property on the object that has a string or an array value.

index.js
const obj = { site: ['bobby', 'hadz', 'com'], }; console.log(obj.site.includes('bobby')); // 👉️ true

We have an object that has a site property with an array value, so we had to access the property before calling the includes() method.

I wrote a book in which I share everything I know about how to become a better, more efficient programmer.
book cover
You can use the search field on my Home Page to filter through all of my articles.