Join my Vue.js course while it's free 👀

Use .slice() to remove the last character of JavaScript Strings

May 26, 2022  ‐ 3 min read

The most convenient way to remove the last character from a JavaScript String object is by making use of the .slice() method.

const name = "Koen";
const result = name.slice(0, -1);
console.log(result);
//=> "Koe"

The two arguments passed to slice() mean the following:

  • The 0 we pass as the first argument to .slice() is the starting-index; from where we want to start slicing.

  • -1, the second argument, is the end-index which indicates up to which character we wish to slice off characters. With negative one we specify the last character of the string.

The .slice() method returns a new string object, leaving the original unchanged.

Description of slice()

The .slice() method extracts a certain portion of a string. To specify this portion we need to pass an index to indicate where to start slicing and optionally one for where to end slicing. If we don't specify an end-index it is assumed that we want to slice to the end of the string.

String.prototype.slice(beginIndex, ?endIndex)

The result that gets returned to us by .slice() is a new String object, the original string won't be mutated.

Thus, to truly remove the last character from the string that is held by a variable we should reassign the result to the original variable.

let name = "Koen";
name = name.slice(0, -1);
console.log(name);
//=> "Koe"

Negative indexing

One part that might be confusing is the negative index of -1. With negative indexes we start at the end of the string and go further backwards once we decrease the negative index.

Thus, a negative index of -1 will return the last character of a string.

const result = "Koen".slice(-1);
console.log(result);
//=> "n"

Slicing off just the last character can be done by first passing the negative string length of -4 and again -1 as the end-index.

const result = "Koen".slice(-4,-1);
console.log(result);
//=> "Koe"

Use substring() to remove the last character

Alternatively we could use the .substring() method instead of .slice(). The downside to this approach is that we cannot make use of negative indexing. Therefore we should find out the necessary end-index via the length of the string.

let name = "Koen";
name = name.substring(0, name.length - 1);
console.log(name);
//=> "Koe"

Remove the first character

We learned to remove the last character from a string, by using the same .slice() we can just as quickly remove the first character from the string.

Instead of passing a negative index to the .slice() method we can pass a positive end-index to the slice of characters from the start of the string.

const result = "Koen".slice(0, 1);
console.log(result);
//=> "oen"

The end-index is non-inclusive, meaning that we slice the string until the index and not up to and including.