javascript

2 maneras de invertir arreglos 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.

Invertir arreglo en JavaScript

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.

Método 1: con método reverse

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.

Método 2: algoritmo manual para invertir un arreglo en JavaScript

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.

Probar maneras de invertir arreglos con JS

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);

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

2 días hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

1 semana hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

1 semana hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

1 semana hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

1 semana hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

1 semana hace

Esta web usa cookies.