Invertir arreglo en JavaScript
Hoy vamos a ver cómo invertir un arreglo en JavaScript de dos maneras: con un método manual que usa ciclos e intercambio de variables, y con uno que invierte el arreglo con funciones nativas.
Voy a mostrar dos maneras de invertir el arreglo porque, aunque ya existe la función nativa, es importante analizar (sobre todo si eres estudiante) algunos algoritmos y ejercicios con arreglos de JavaScript.
Los arreglos en JavaScript (sin importar el tipo) ya cuentan con un método llamado reverse
, el cual invierte el arreglo directamente, sin regresar nada. Su forma de uso es:
elArreglo.reverse();
Al final dejaré un ejemplo.
Ahora veamos el enfoque en donde intercambiamos valores dentro del arreglo. Lo que hacemos es recorrer el arreglo desde 0 hasta su mitad, e ir intercambiando el primer elemento con el último, el segundo con el penúltimo y así sucesivamente.
const invertirManual = arreglo => {
// Guardar de una vez la longitud para hacer más legible el código
let longitudDelArreglo = arreglo.length;
// Recorrer arreglo hasta la mitad. Si es impar, se va al entero anterior más
// próximo. P. ej. 5 / 2 => 2
for (let x = 0; x < longitudDelArreglo / 2; x++) {
// Respaldar el valor actual
let temporal = arreglo[x];
// Calcular el índice contrario, es decir, el del otro lado de la mitad; el cual irá descendiendo
let indiceContrario = longitudDelArreglo - x - 1;
// En el actual ahora está el del otro lado
arreglo[x] = arreglo[indiceContrario];
// Y en el otro lado, el que estaba originalmente en el actual
arreglo[indiceContrario] = temporal;
}
// No regresamos nada porque ya modificamos al arreglo internamente
};
Utilizo una variable temporal para guardar el elemento que se intercambia. Al final, el arreglo estará invertido y no tengo que regresarlo, pues está modificado internamente.
Nota: no te confundas, en el código utilizo las funciones flecha.
Voy a poner todo el código junto y a probar que realmente funciona. El código queda así:
/**
* Dos métodos para invertir arreglos en JavaScript:
* algoritmo que intercambia valores dentro del arreglo y otro
* que usa una función nativa de los arreglos en JavaScript
*
* @author parzibyte
* Visita: parzibyte.me/blog
*/const invertirManual = arreglo => {
// Guardar de una vez la longitud para hacer más legible el código
let longitudDelArreglo = arreglo.length;
// Recorrer arreglo hasta la mitad. Si es impar, se va al entero anterior más
// próximo. P. ej. 5 / 2 => 2
for (let x = 0; x < longitudDelArreglo / 2; x++) {
// Respaldar el valor actual
let temporal = arreglo[x];
// Calcular el índice contrario, es decir, el del otro lado de la mitad; el cual irá descendiendo
let indiceContrario = longitudDelArreglo - x - 1;
// En el actual ahora está el del otro lado
arreglo[x] = arreglo[indiceContrario];
// Y en el otro lado, el que estaba originalmente en el actual
arreglo[indiceContrario] = temporal;
}
// No regresamos nada porque ya modificamos al arreglo internamente
};
const lenguajes = ["PHP", "C", "C#", "Rust", "Java", "JavaScript", "C++", "Go"];
// Imprimir arreglo original
console.log("Original: ", lenguajes);
// Invertir con método manual
invertirManual(lenguajes);
console.log("Invertido manualmente: ", lenguajes);
// Invertir con método existente
lenguajes.reverse();
console.log("Invertido con reverse: ", lenguajes);
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…
Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…
Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…
Esta web usa cookies.