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. -12345
se convierte en-54321
- Se deben eliminar los ceros iniciales.
ex. 321000
se convierte en 123
y no000123
- La función puede aceptar números enteros o flotantes.
ex. 543.2100
se convierte en12.345
- La función devolverá enteros como enteros.
ex. 54321
se convierte en 12345
y 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 return
valor explícito .
Las funciones de flecha tienen un return
valor 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 split
funció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 num
en un flotador de un String.
// num = '0012345-' parseFloat(num) // num = 12345
Nota :parseFloat
se 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!