En este post de programación en JavaScript te enseñaré a invertir o voltear un número.
Que por ejemplo si el número es 123 sea 321 al invertirlo con JS. Con esto también vamos a saber si un número es capicúa.
Invirtiendo número con JavaScript
Hay 2 enfoques para resolver este problema. El primero es el más simple, y es básicamente convertir el número a cadena, invertir la cadena y luego convertirla de vuelta a número.
El segundo método es invertir el número con matemáticas. Te enseñaré ambos por si a tu profesor le gusta hacerte perder el tiempo con algoritmos que no son divertidos.
Invertir número: convirtiendo a cadena
Ya tengo un post que dice cómo invertir una cadena, así que no voy a profundizar mucho. Entonces para voltear un número hacemos lo siguiente:
const invertirNumeroComoCadena = numero => {
const numeroInvertidoComoCadena = numero.toString().split("").reverse().join("");
// Si quieres puedes hacer un parseFloat() para regresarlo como número y no como cadena
return numeroInvertidoComoCadena;
};
Por cierto, eso regresará el número como cadena. La ventaja es que va a conservar los ceros a la izquierda. Si no quieres conservarlos entonces convierte con parseFloat
.
JavaScript: invertir número
Ahora veamos el otro enfoque que es el de usar matemáticas. Lo hacemos así:
const invertirNumero = numero => {
// Nota: como alternativa podría usarse la función que invierte una cadena, convirtiendo el número
// a cadena, invocando a la función y convirtiendo la cadena a número
// https://parzibyte.me/blog/2018/11/18/invertir-cadena-palabra-javascript/
let invertido = 0;
while (numero != 0) {
invertido = 10 * invertido + numero % 10
numero = (Math.floor(numero / 10))
}
return invertido
};
Poniendo todo junto
A continuación te muestro cómo usar estos dos métodos con unos ejemplos. Puedes comparar los resultados:
// https://parzibyte.me/blog
const invertirNumero = numero => {
// Nota: como alternativa podría usarse la función que invierte una cadena, convirtiendo el número
// a cadena, invocando a la función y convirtiendo la cadena a número
// https://parzibyte.me/blog/2018/11/18/invertir-cadena-palabra-javascript/
let invertido = 0;
while (numero != 0) {
invertido = 10 * invertido + numero % 10
numero = (Math.floor(numero / 10))
}
return invertido
};
const invertirNumeroComoCadena = numero => {
const numeroInvertidoComoCadena = numero.toString().split("").reverse().join("");
// Si quieres puedes hacer un parseFloat() para regresarlo como número y no como cadena
return numeroInvertidoComoCadena;
};
// Probar
const numeros = [1, 2, 800, 912, 1000, 1283, 2811];
for (const numero of numeros) {
const invertidoComoNumero = invertirNumero(numero);
const invertidoComoCadena = invertirNumeroComoCadena(numero);
console.log("El número '%s' es '%s' invertido como número, y '%s' como cadena", numero, invertidoComoNumero, invertidoComoCadena);
}
Al ejecutarlo, la salida es correcta. Por cierto, esto puede ser ejecutado en Node o dentro del navegador web:
Por aquí te dejo más sobre JavaScript.