What is an array in Computer Science?

Arrays en JavaScript: La Guía Definitiva

07/04/2018

Valoración: 4.18 (3355 votos)

En el vasto universo de la programación, pocas estructuras de datos son tan fundamentales y versátiles como los arrays. En JavaScript, un array no es solo un contenedor, sino una poderosa herramienta que nos permite organizar, manipular y procesar colecciones de datos de manera eficiente. Si alguna vez te has preguntado cómo gestionar una lista de usuarios, una serie de puntuaciones o simplemente un conjunto de elementos relacionados sin declarar docenas de variables, has llegado al lugar correcto. Esta guía te llevará de la mano a través de todo lo que necesitas saber para dominar los arrays, desde su creación más básica hasta los métodos más avanzados que te ahorrarán horas de trabajo.

What is an array object?
The Array object is used to store multiple values in a single variable. Well organized and easy to understand Web building tutorials with lots of examples of how to use HTML, CSS, JavaScript, SQL, Python, PHP, Bootstrap, Java, XML and more.
Índice de Contenido

¿Qué es Exactamente un Array en JavaScript?

Imagina que tienes una lista de compras. En lugar de escribir cada artículo en un papelito diferente, los agrupas todos en una sola hoja. Un array funciona de manera similar: es un objeto único, similar a una lista, que puede contener múltiples valores bajo un solo nombre. Estos valores, llamados elementos, pueden ser de cualquier tipo: números, cadenas de texto, booleanos, objetos e incluso otros arrays.

Las características clave que definen a un array en JavaScript son:

  • Ordenados: Los elementos mantienen el orden en que fueron insertados. Cada elemento tiene una posición específica.
  • Índice base cero: La posición del primer elemento es el índice 0, la del segundo es el 1, y así sucesivamente. Esto es crucial para acceder a elementos específicos.
  • Tamaño dinámico: A diferencia de otros lenguajes, no necesitas definir el tamaño de un array al crearlo. Puedes añadir o quitar elementos en cualquier momento, y el array crecerá o se encogerá según sea necesario.
  • Heterogéneos: Un solo array puede almacenar elementos de diferentes tipos de datos. Puedes tener un número, una cadena de texto y un objeto en la misma colección.

Creando tu Primer Array: Las Buenas Prácticas

Existen dos formas principales de crear un array, pero una es mucho más recomendada que la otra.

La Forma Moderna y Preferida: El Literal de Array

La manera más sencilla, legible y rápida de crear un array es utilizando corchetes []. Esta sintaxis se conoce como "literal de array".

// Un array vacío
const heroes = [];

// Un array con elementos de tipo string
const nombres = ["Clark", "Bruce", "Diana"];

// Un array con números
const puntuaciones = [100, 95, 88];

// Un array con tipos de datos mixtos
const datosMixtos = ["Peter Parker", 25, true, { trabajo: "Fotógrafo" }];

Es una práctica común declarar los arrays con const. Esto no significa que el array sea inmutable (puedes cambiar sus elementos), sino que la variable no puede ser reasignada a un nuevo array u otro valor.

What is the relationship between arrays and objects in JavaScript?
Relationship between arrays and objects in JavaScript. In JavaScript, arrays are a type of object. However, Arrays use numbered indexes to access elements. Objects use named indexes (keys) to access values. Since arrays are objects, the array elements are stored by reference.

La Forma Antigua: El Constructor `new Array()`

También puedes crear arrays usando el constructor new Array(). Sin embargo, su comportamiento puede ser confuso y propenso a errores, por lo que generalmente se desaconseja.

const coches = new Array("Saab", "Volvo", "BMW");

El problema surge cuando le pasas un solo argumento numérico. En lugar de crear un array con ese número como único elemento, crea un array vacío con una longitud predefinida, lleno de "agujeros".

// ¡CUIDADO! Esto NO crea un array con el elemento 40
const puntosErroneos = new Array(40); // Crea un array vacío con longitud 40

// Esto sí crea un array con el elemento 40
const puntosCorrectos = [40];

Para evitar esta ambigüedad, el estándar ES6 introdujo Array.of(), que siempre crea un array con los argumentos que le pases, sin importar el tipo o la cantidad.

let numeros = Array.of(10); // Devuelve [10], no un array de longitud 10

Operaciones Fundamentales: Acceso, Modificación y Longitud

Una vez que tienes tu array, lo primero que querrás hacer es interactuar con sus elementos.

Acceder a los Elementos

Para leer el valor de un elemento, usas su índice numérico entre corchetes.

What is an array in MDN?
Note: Scrimba's Aside: Intro to arrays scrim MDN learning partner provides a useful interactive introduction to arrays with example walkthroughs and a challenge to test your knowledge. Arrays consist of square brackets and items that are separated by commas. Suppose we want to store a shopping list in an array.

const frutas = ["Banana", "Naranja", "Manzana", "Mango"];
let primeraFruta = frutas[0]; // "Banana"
let terceraFruta = frutas[2]; // "Manzana"

Modificar Elementos

De la misma manera, puedes cambiar el valor de un elemento existente asignándole un nuevo valor a través de su índice.

frutas[1] = "Uva";
// Ahora el array es: ["Banana", "Uva", "Manzana", "Mango"]

La Propiedad `length`

La propiedad .length es una de las más útiles. Te devuelve el número total de elementos en el array. Es siempre uno más que el índice más alto.

console.log(frutas.length); // Imprime 4

Puedes usar length para acceder dinámicamente al último elemento:

let ultimaFruta = frutas[frutas.length - 1]; // "Mango"

Añadiendo y Eliminando Elementos

La naturaleza dinámica de los arrays en JavaScript brilla cuando empezamos a modificar su tamaño.

  • push(): Añade uno o más elementos al final del array. Devuelve la nueva longitud.
  • pop(): Elimina el último elemento del array. Devuelve el elemento eliminado.
  • unshift(): Añade uno o más elementos al inicio del array. Devuelve la nueva longitud.
  • shift(): Elimina el primer elemento del array. Devuelve el elemento eliminado.

let actividades = ["comer", "dormir"];

// Añadir al final
actividades.push("trabajar"); // ["comer", "dormir", "trabajar"]

// Eliminar del final
let actividadEliminada = actividades.pop(); // actividadEliminada es "trabajar", el array es ["comer", "dormir"]

// Añadir al inicio
actividades.unshift("despertar"); // ["despertar", "comer", "dormir"]

// Eliminar del inicio
actividades.shift(); // Devuelve "despertar", el array es ["comer", "dormir"]

El Poderoso Método `splice()`

Para operaciones más complejas, como eliminar o añadir elementos en cualquier posición, tenemos el métodosplice(). Es una verdadera navaja suiza.

Su sintaxis es: array.splice(inicio, cantidadAEliminar, elemento1, elemento2, ...)

let numeros = [1, 2, 3, 4, 5];

// Eliminar un elemento desde el índice 2
numeros.splice(2, 1); // Elimina el 3. El array ahora es [1, 2, 4, 5]

// Reemplazar un elemento
numeros.splice(1, 1, 99); // Reemplaza el 2 por 99. El array es [1, 99, 4, 5]

// Añadir elementos sin eliminar
numeros.splice(2, 0, 10, 11); // Añade 10 y 11 en el índice 2. El array es [1, 99, 10, 11, 4, 5]

Recorriendo e Iterando Arrays

Rara vez querrás trabajar con un solo elemento. Lo más común es realizar una operación en todos o en algunos de los elementos del array. Para esto, necesitamos iterar.

What is an array object?
The Array object is used to store multiple values in a single variable. Well organized and easy to understand Web building tutorials with lots of examples of how to use HTML, CSS, JavaScript, SQL, Python, PHP, Bootstrap, Java, XML and more.

El Bucle Clásico `for`

La forma tradicional y universal de recorrer un array.

const planetas = ["Mercurio", "Venus", "Tierra", "Marte"];
for (let i = 0; i < planetas.length; i++) {
console.log(planetas[i]);
}

Métodos Modernos de Iteración

JavaScript moderno ofrece métodos más declarativos y legibles que son, en la mayoría de los casos, preferibles al bucle `for`.

  • forEach(): Ejecuta una función para cada elemento del array. No devuelve nada. Ideal para ejecutar efectos secundarios, como imprimir en consola.
  • map(): Crea un nuevo array con los resultados de llamar a una función para cada elemento. Es fundamental para transformar datos.
  • filter(): Crea un nuevo array con todos los elementos que pasen una prueba (una función que devuelve `true` o `false`).
  • find(): Devuelve el primer elemento que cumple con una condición. Si no lo encuentra, devuelve `undefined`.
  • reduce(): Aplica una función a un acumulador y a cada elemento del array (de izquierda a derecha) para reducirlo a un único valor.

const nums = [5, 10, 15, 20];

// forEach: Imprimir cada número
nums.forEach(num => console.log(num));

// map: Crear un nuevo array con los dobles
const dobles = nums.map(num => num * 2); // [10, 20, 30, 40]

// filter: Crear un nuevo array con números mayores a 10
const mayores = nums.filter(num => num > 10); // [15, 20]

// reduce: Sumar todos los números
const sumaTotal = nums.reduce((acumulador, numActual) => acumulador + numActual, 0); // 50

La Relación Especial: Arrays y Objetos

Un punto que a menudo confunde a los principiantes es que, en JavaScript, los arrays son técnicamente un tipo especial de objeto.

const miArray = [1, 2, 3];
console.log(typeof miArray); // Imprime "object"

La principal diferencia radica en cómo acceden a sus datos:

  • Objetos usan claves (strings) para acceder a sus miembros: persona.nombre o persona["nombre"].
  • Arrays usan índices numéricos para acceder a sus elementos: miArray[0].

Debido a esta relación, si asignas un array a otra variable, no estás creando una copia. Ambas variables apuntarán al mismo array en la memoria. Un cambio en una afectará a la otra.

let arrOriginal = ["a", "b"];
let arrCopia = arrOriginal; // No es una copia, es una referencia

arrCopia.push("c");

console.log(arrOriginal); // ["a", "b", "c"] ¡El original también cambió!

Para crear una copia real (superficial), puedes usar el operador de propagación `...` o el método `slice()`:

let arrCopiaReal = [...arrOriginal];

Tabla de Referencia Rápida de Métodos

Aquí tienes una tabla comparativa con algunos de los métodos más utilizados, destacando si modifican el array original (mutan) o devuelven uno nuevo.

What is an array in Computer Science?
In computer science, an array is a data structure consisting of a collection of elements (values or variables), of same memory size, each identified by at least one array index or key, a collection of which may be a tuple, known as an index tuple.
MétodoDescripción¿Muta el Original?
push(), pop(), shift(), unshift()Añaden/eliminan elementos en los extremos.
splice()Añade, elimina o reemplaza elementos en cualquier posición.
sort(), reverse()Ordena o invierte los elementos del array.
map(), filter()Crean un nuevo array basado en el original.No
slice()Extrae una porción del array en un nuevo array.No
concat()Une dos o más arrays en un nuevo array.No
join()Une todos los elementos en una cadena de texto.No
includes(), indexOf()Buscan un elemento y devuelven un booleano o su índice.No

Preguntas Frecuentes (FAQ)

¿Cómo sé si una variable es realmente un array?

Dado que typeof devuelve "object", la forma correcta y moderna de verificar si algo es un array es usando Array.isArray().

Array.isArray([1, 2, 3]); // true
Array.isArray({a: 1}); // false

¿Cuál es la diferencia entre `slice()` y `splice()`?

Es una de las confusiones más comunes. Recuerda: slice() (rebanada) no modifica el original, simplemente extrae una porción y devuelve un nuevo array. splice() (empalmar) sí modifica el array original para eliminar, reemplazar o añadir elementos.

¿Cuándo debo usar un Array y cuándo un Objeto?

Usa un Array cuando el orden de los elementos importa y tienes una colección de datos similares (una lista de nombres, una secuencia de números). Usa un Objeto cuando necesitas una estructura de pares clave-valor, donde las claves son descriptivas y el orden no es relevante (las propiedades de un usuario: nombre, edad, email).

¿Qué son los arrays multidimensionales?

Son simplemente arrays que contienen otros arrays como elementos. Se utilizan para representar estructuras de datos como matrices o tableros de juego. Se accede a sus elementos encadenando los corchetes.

const matriz = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let elemento = matriz[1][2]; // Accede al 6 (fila con índice 1, columna con índice 2)

Los arrays son una pieza angular en el desarrollo con JavaScript. Comprenderlos a fondo no solo te permitirá escribir código más limpio y eficiente, sino que también te abrirá las puertas a conceptos más avanzados de programación funcional y manipulación de datos. ¡Ahora es tu turno de practicar y construir cosas asombrosas!

Si quieres conocer otros artículos parecidos a Arrays en JavaScript: La Guía Definitiva puedes visitar la categoría Juegos.

Subir