Este código funciona bien, excepto cualquier número que sea múltiplo de 10. Probé con 121, -121, 55, -55. Estaba funcionando bien. pero con 10 no está generando la respuesta correcta.
var isPalindrome = function(x) { var convertToString= toString(x); var splitString= convertToString.split(""); var reversedString= splitString.reverse(); if(x<0){ return false; } if(reversedString == splitString){ return true; } else { return false; } };Hay un par de problemas con este código, aunque estás en el camino correcto. Primero, su uso de toString es ligeramente incorrecto:
toString(101); // '[object Undefined]' toString debe llamarse como un método de x , como x.toString() . Vea esta página para más detalles. Si lo cambia a x.toString() , funciona:
var x = 101; // "101" En segundo lugar, actualmente está comparando matrices con == , que no hará lo que desea. Darse cuenta de:
[0, 1] == [0, 1] // falsemientras
"01" == "01" // trueEsto se debe a que JS compara cadenas por valor, pero no compara objetos (lo que incluye matrices) por valor. Por ejemplo:
var x = 1; var y = 1; console.log(x == y); // true var a = [1]; var b = [1]; console.log(a == b); // false console.log(a == a); // true Para obtener más información al respecto, lea esta pregunta o intente buscar en Google 'javascript pass by reference'. Pero en resumen, una solución a su problema sería simplemente usar cadenas, que funcionan como cabría esperar con == .
Después de solucionar estos problemas, su código debería verse así:
var isPalindrome = function(x) { var convertToString= String(x); var reversedString= convertToString.split("").reverse().join(""); if(x<0){ return false; } if(convertToString == reversedString){ return true; } else { return false; } };También podría considerar acortar la declaración if al final y hacer que el espaciado sea más consistente:
var isPalindrome = function(x) { var convertToString = String(x); var reversedString = convertToString.split("").reverse().join(""); if(x < 0){ return false; } return convertToString == reversedString; };La implementación de su función es totalmente incorrecta. No debería funcionar con ninguna entrada dada.
if(convertToString == splitString) // comparisonaquí está utilizando el operador de comparación para comparar ambos valores, pero debajo del capó, el compilador está comparando [ ] = [ ] los valores dentro de las matrices, no importa, siempre será cierto. tiene que encontrar una manera de comparar los valores dentro de ambas matrices para que la función funcione. (Spoiler: podría usar algún tipo de bucle para comparar los valores)
Y usa la función toString así,
var convertToString= x.toString();para obtener el valor en cadena de x.