Cómo invertir un número en JavaScript

Ejemplos que utilizan una función de flecha y una función JS normal

Invertir una cadena o invertir un número es una de las preguntas más comunes que se hacen en las entrevistas de programación. Echemos un vistazo a cómo se hace esto.

Reglas / Limitaciones :

  • Los números negativos deben seguir siendo negativos.

ex. -12345se convierte en-54321

  • Se deben eliminar los ceros iniciales.

ex. 321000se convierte en 123y no000123

  • La función puede aceptar números enteros o flotantes.

ex. 543.2100se convierte en12.345

  • La función devolverá enteros como enteros.

ex. 54321se convierte en 12345y no12345.00

Resolver con una función de flecha:

const reversedNum = num => parseFloat(num.toString().split('').reverse().join('')) * Math.sign(num)

Resolver con una función regular:

function reversedNum(num) { return ( parseFloat( num .toString() .split('') .reverse() .join('') ) * Math.sign(num) ) }

Diferencia entre una función de flecha y una función regular:

En este ejemplo, la única diferencia entre la función de flecha y la función Regular es que la función Regular necesita proporcionar un returnvalor explícito .

Las funciones de flecha tienen un returnvalor implícito , si se pueden escribir en una línea, sin necesidad de {}llaves.

Analicemos los pasos hacia abajo:

  • Convierte el número en una cadena

num.toString()convierte el número dado en una cadena. Hacemos esto para que podamos usar la splitfunción a continuación.

let num = -5432100 num.toString() // num = '-5432100'
  • Divida la cadena en una matriz

num.split('')convierte la cadena en una matriz de caracteres. Hacemos esto para poder usar la función inversa Array ( que no funciona en una cadena ).

// num = '-5432100' num.split('') // num = [ '-', '5', '4', '3', '2', '1', '0', '0' ]
  • Invertir la matriz

num.reverse() invierte el orden de los elementos de la matriz.

// num = [ '-', '5', '4', '3', '2', '1', '0', '0' ] num.reverse() // num = [ '0', '0', '1', '2', '3', '4', '5', '-' ]
  • Únelo de nuevo en una cuerda

num.join('') vuelve a ensamblar los caracteres invertidos en una cadena.

// num = [ '0', '0', '1', '2', '3', '4', '5', '-' ] num.join('') // num = '0012345-'
  • Analice el valor de entrada en un número de punto flotante:

parseFloat(num)se convierte numen un flotador de un String.

// num = '0012345-' parseFloat(num) // num = 12345

Nota :parseFloatse ejecuta al final (aunque esté en la primera línea de la función) en el número invertido y elimina los ceros iniciales.

  • Multiplíquelo por el signo del número original para mantener el valor negativo.

num * Math.sign(num) multiplica el número con el signo del número original proporcionado.

// original value of num = -5432100 // num = 12345 num * Math.sign(-5432100) // num = -12345

¡Y ahí lo tienes!