Invertir arreglo en 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
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.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *