TypeError: slice is not a function in JavaScript

avatar

Borislav Hadzhiev

Last updated: Jul 25, 2022

banner

Photo from Unsplash

TypeError: slice is not a function in JavaScript #

The "slice is not a function" error occurs when the slice() 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 slice method on strings or arrays.

typeerror slice is not a function

Here is an example of how the error occurs.

index.js
const str = 9876; // ⛔️ TypError: slice is not a function const result = str.slice(2);

We called the slice method on a number which caused the error. The slice method is implemented by 2 data types in JavaScript - String.slice and Array.slice.

To solve the error, either 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
// 👇️ For Strings const num = 9876; const result1 = num.toString().slice(2); console.log(result1); // 👉️ "76" // 👇️ For Arrays const set = new Set(['a', 'b', 'c']); const result2 = Array.from(set).slice(2); console.log(result2); // 👉️ ['c']

We used the toString() method to convert the number to a string before calling the slice method.

In the second example, we used the Array.from method to convert a Set to an array before calling the slice method.

Alternatively, you can conditionally check if the value is of the correct type before calling the slice method.
index.js
const num = 9876; const result1 = typeof num === 'string' ? num.slice(2) : ''; console.log(result1); // 👉️ "" // 👇️ For Arrays const set = new Set(['a', 'b', 'c']); const result2 = Array.isArray(set) ? set.slice(2) : []; console.log(result2); // 👉️ []

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.

In the first example, we check if the value has a type of string. If it does, we return the result of calling the slice, otherwise we return an empty string.

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 slice method, otherwise we return an empty array.

If the error persists, console.log the value you're calling the slice 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 value of type string or array.

Conclusion #

The "slice is not a function" error occurs when the slice() 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 slice method on strings or arrays.

Further Reading #

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.