Como mencioné antes, quiero invertir un número con el signo menos
Rendimiento esperado
141-mi salida es
-141 /** * @param {number} x * @return {boolean} */ var isPalindrome = function (x) { var reversedNum = parseFloat(x.toString().split('').reverse().join('')) * Math.sign(x); return reversedNum; }; console.log(isPalindrome(-141));const isPalindrome = (x) => { const str = new String(x); return Array.from(str).reverse().join(''); }Tomándolo paso a paso:
x = -141 -141.toString() = "-141" "-141".split('') = ["-","1","4","1"] ["-","1","4","1"].reverse() = ["1","4","1","-"] ["1","4","1","-"].join('') = "141-" parseFloat("141-") = 141 Math.sign(-141) = -1 141 * -1 = -141 Si está intentando generar un tipo de number serializado como 141- , eso es imposible. Si desea una salida - cadena, no hay razón para analizar como un flotante ya que se ignora el final. Así que simplemente elimine parseFloat() y * Math.sign(x) .
Sin embargo, su JSdoc dicta que la función debe devolver un valor booleano, y la función se llama isPalindrome , lo que indica que debe devolver si la entrada es la misma al revés. En cuyo caso esperaría algo como:
var isPalindrome = function (x) { return x.toString() === [...x.toString()].reverse().join(''); };const isPalindrome = number => number.toString().split("").reverse().join("") number = -142
El método toString() convierte el número en cadena. // "-141"
El método split("") convierte la cadena en una matriz. // ["-", "1", "4", "1"]
El método reverse() invierte la matriz. // ["1", "4", "1", "-"]
El método join("") devuelve la matriz como una cadena. // "141-"