**Enunciado: **Que nuestra función devuelva true si la frase que nos pasan por argumento es un palíndromo, de lo contrario, que devuelva false.

**Explicación: **Un palíndromo es una palabra o una frase que se lee por igual hacía delante y hacía atrás, ignorando todos los signos de puntuación, símbolos y espacios.

**Pistas: **Eliminar los signos de puntuación y transformar todas las letras a minúsculas.

Lecturas recomendadas:

Bien, empecemos con la explicación y solución del problema.


Lo primero que hago es pasar el string que nos pasan por argumento** **a otra variable a la vez que lo transformo enteramente a minúsculas.

<code class="EnlighterJSRAW" data-enlighter-language="null">var lowerCase=str.toLowerCase();

Lo siguiente que hago es quitar todos los caracteres tipo espacios, puntos, comas, barras bajas con el método replace(); Este método funciona de la forma que, le tenemos que pasar dos argumentos, el primero es lo qué tiene que buscar y lo segundo con que reemplazarlo una vez encontrado.

Como podemos ver, le indicamos que lo reemplace por ”, es decir, nada, que simplemente los quite.

**\W** quita las comas, puntos y espacios
**\_** quita las barras bajas.
**/g** significa que mire todos los casos, no solo el primero que se encuentre que cumpla la condición que le hemos pasado 
**/i** lo que hace es ignorar que sean mayúsculas o minúsculas.
 

Creamos una variable de tipo matriz y le asignamos el valor del string que anteriormente habiamos quitado signos de puntuaciones y convertido a mayúscula. Lo asignamos con dos métodos a la vez. El primero, .split(), lo que hace es separar e introducir letra por letra lo que hay en **lowerCase **a strReversed transformándolo en matriz.

<code class="EnlighterJSRAW" data-enlighter-language="null">lowerCase=lowerCase.replace(/\W|\_/gi,'');

Y .reverse() es bien sencillo, lo que hace es simplemente dar la vuelta a la tortilla. Si tenemos ‘hola’ dentro de la matriz lo transforma a ‘aloh’.

<code class="EnlighterJSRAW" data-enlighter-language="null">var strReversed=lowerCase.split('').reverse();

Ideamos una nueva variable llamada **joint **y asignamos la matriz anterior junto al método join(). Que lo que hace es transformar todos los elementos de dicha matriz en una única cadena de texto.

[ecko_code_highlight language=”javascript”]var joint=strReversed.join(”);[/ecko_code_highlight]

Y por última parte, la comparación de cadenas. Comparamos la cadena original, libre de mayusculas y minusculas y espacios, con la matriz invertida, joint.

if(lowerCase===joint) return true; else return false;

El código final nos quedaría así =>

function palindrome(str) { var lowerCase=str.toLowerCase(); lowerCase=lowerCase.replace(/\W|_/gi,''); var strReversed=lowerCase.split('').reverse(); var joint=strReversed.join(''); if(lowerCase===joint) return true; else return false; } palindrome("A man, a plan, a canal. Panama");

Espero que os haya ayudado y resuelto las dudas que tengáis y a ver como avanzo con las bonfires.