Search code examples
javascriptfunctionslicepalindrome

I need an explanation on slice()


I was completing javascript exercises and got stuck on creating a function which checks if a string is a palindrome. For your reference, this was the given solution.

I understand what slice() does as a method, and I followed the function here until the point where it checks to see if the first letter matches the last.

if (cstr[x] != cstr.slice(-1-x)[0])

What is going on with the parameter values of the slice method? I was expecting the parameters to slice the last letter and I presume it does but I would appreciate some help in pointing out how!


Solution

  • Let's pop open the console and take a look!

    > var s = 'abcde'
    "abcde"
    > s[0]
    "a"
    > s.slice(-1)
    "e"
    > s.slice(-1)[0]
    "e"
    > s[1]
    "b"
    > s.slice(-1 - 1)
    "de"
    > s.slice(-1 - 1)[0]
    "d"
    

    As I hope you can see by now, slicing with a negative number -n will return the last n characters of the string, with n = 1 being the last character. So to have the palindrome test work correctly, you need to slice at -1 - x (the "x-th from last" character).