Apuntes sacados del curso de introducción a la programación, impartido por Universitas Telefónica (que realicé en Miríadax). Añadí algunos elementos para que no sea una copia exacta.

Resumiendo de la forma más simple: son variables que pueden guardar variables. Es decir, datos que están formados por elementos de los tipos que ya hemos visto (números, strings y booleanos). Esto facilita trabajar con varios valores al mismo tiempo, en vez de uno. Además, estas estructuras pueden contenerse a sí mismas, formando otras estructuras más complejas.

Arrays (Arreglos)

Estas listas o colecciones son estructuras formadas por elementos relacionados. Permiten guardar varios valores y acceder a los mismos de forma independiente. Para crear un array se puede usar:

var a5 = new Array(5); //crea un array vacío de cinco huecos (o posiciones)
var mezcla = new Array(2, “Hola”, 5.4, true, “mundo”); //crea un array con cinco elementos
var empty = new Array(); //crea un array vacío sin un número definido de huecos

Otra manera es utilizando corchetes ([]) y separando elementos con la coma, simplificando el proceso:

var vacio = []; //crea un array vacío sin un número definido de posiciones
var elementos = [“Fuego”, “Agua”, “Rayo”, “Tierra”]; //crea un array con cuatro elementos

Para acceder a una posición del array, se utiliza su nombre, los corchetes y el índice correspondiente (teniendo en cuenta que se empieza en el 0). Por ejemplo:

elementos[0]; //devuelve el string “Fuego”

Para asignar un nuevo valor a esa posición, o para añadir elementos a un array vacío:

elementos[0] = “Piro”; //cambia el string “Fuego” por “Piro”
vacio[0] = 1; //añade un número en la primera posición del array
vacio[1] = 6.75; //añade otro número a la segunda posición, haciendo que el array actual tenga dos elementos

Propiedad length

Permite conocer el tamaño de un array; es decir, los huecos o posiciones que contiene. Length es longitud en inglés. Tomando elementos como ejemplo:

elementos.length; //devolvería 4, ya que tiene cuatro elementos

Esta característica es muy útil cuando no se conoce la longitud de un array y se quiere, por ejemplo, recorrerlo completamente.

Recorriendo un array

Para esto, se utilizará una estructura de iteración (por lo general, el bucle for). Servirá tanto para un array simple como para uno multidimensional (dos o más dimensiones), como una matriz (array bidimensional).
Una aplicación práctica de esto sería sumar los números contenidos en un array, mostrando en la consola el total.

var numeros = [2, 4, 7, 11];
var total = 0; //se inicializa a 0 para evitar errores
for (var i = 0; i < numeros.length; i++) {
    total = total + numeros[i]; //en cada repetición se suma el total anterior y el valor de la posición
}
console.log(“El total es: ” + total);

Buscando en un array

En este caso, se utilizará una estructura de iteración para recorrer el array (como vimos antes) y, además, una estructura de selección, que servirá para comparar cada elemento del array y ver si coincide con lo que se busca.
Un ejemplo práctico podría ser el buscar una carta determinada en una mano (un array simple con varios elementos de tipo string).

var cartas = [“2d”, “3p”, “6c”, “7t”, “1d”];
var encontrada = false; //se inicializa a false, porque no se sabe si la carta que buscamos estará en la mano
for (var i = 0; i < cartas.length; i++) {
    if (cartas[i] === “6t”) {
        encontrada = true; //si la carta es encontrada, entonces la variable pasa a true
    }
}

En este caso, la sentencia if no se va a cumplir. Por lo tanto, la variable booleana se mantendrá en false.
Retocando este mismo ejemplo, podríamos añadir unas cuantas líneas para que, de encontrar la carta buscada, nos muestre un mensaje en la consola (incluso con la posición exacta dentro del array); y si no, otro mensaje.

var cartas = [“2d”, “3p”, “6c”, “7t”, “1d”];
var encontrada = false; //se inicializa a false, porque no se sabe si la carta que buscamos estará en la mano
for (var i = 0; i < cartas.length; i++) {
    if (cartas[i] === “7t”) {
        encontrada = true; //si la carta es encontrada, entonces la variable pasa a true
        posicion = i + 1; //se guarda la posición en la que está la carta
    }
}

if (encontrada) {
    console.log(“La carta está en la posición ” + posicion + “.”);
} else {
    console.log(“No se encontró la carta.”);
}

En este caso, el if se va a cumplir en la cuarta repetición. Teniendo en cuenta que las posiciones del array empiezan en 0, la posición natural será la i + 1; si no, el resultado será 3 (se puede entender, si tienes en cuenta la particularidad de comenzar la cuenta en 0).

Insertando un nuevo elemento en un array

Una recomendación es declarar una variable (otro array) para guardar los cambios, sin modificar el array original. Así se evitan posibles errores o cambios no deseados.
Se recorre el array cartas, copiando cada elemento en el array resultado. Al llegar a la posición deseada, se entra en el if y se añade el nuevo elemento (el as de tréboles, en el ejemplo).

var cartas = [“6d”, “3t”, “1c”, “10p”];
var resultado = []; //el array vacío donde se copiará el original para realizar la inserción
for (var i = 0; i < cartas.length; i++) {
    resultado[resultado.length] = cartas[i]; //se copia el array original
    if (cartas[i] === “3t”) {
        resultado[resultado.length] = “1t”; //se inserta el nuevo valor después de la carta elegida
    }
}
console.log(“La nueva mano ” + resultado);

De esta manera, la inserción tendrá lugar en resultado sin afectar al original cartas. Tras comprobar que la operación ha sido satisfactoria, se podría reasignar el contenido de resultado a cartas, dejando aquel array para nuevos cambios (y el original con el nuevo elemento).

Diccionarios

Viene del término hash en inglés. Permiten almacenar datos estructurados en pares clave-valor; la clave sería el índice y el valor cualquier tipo de dato ya visto. En JavaScript, se denominan Object (objeto).

Para crear un diccionario se usan las llaves ({}), la coma para separar los pares clave-valor y los dos puntos (:) para asignar un valor a una clave.

var vacio = {}; //declaración de un diccionario vacío
var carta = {palo: “c”, valor: 1}; //declaración de un diccionario con dos pares de clave-valor

Este ejemplo simula el as de corazones. Un diccionario puede tener tantos pares clave-valor como se quiera.

Leer información en un diccionario

Hay dos formas de acceder a los valores:

carta[“palo”]; //primera forma de acceder al valor de la clave “palo”
carta.palo; //segunda forma de acceder al valor de la clave “palo”, más común que la primera

La primera se asemeja a lo visto con un array, pero utilizando la clave entrecomillada. La segunda, la más usual para evitar confusiones con el array, utiliza un punto después del nombre de la variable, junto a la clave. En ambos casos, el resultado sería “c”.

Actualizar información en un diccionario

Podemos utilizar cualquier de las dos maneras vistas anteriormente, junto al operador de asignación. Por ejemplo, para cambiar el valor del palo de nuestra carta:

var carta = {palo: “c”, valor: 1};

carta[“palo”] = “d”; //cambia el valor de la clave “palo” a “d”
carta.palo = “t”; //cambia el valor de la clave “palo” a “t”

Array de diccionarios

Contiene diccionarios en vez de tipo de datos simples. Estos pueden declararse por separado, y luego incluirlos en el array; o declararlos directamente dentro del array.

var as = {palo: “c”, valor: 1}; //primer diccionario
var rey = {palo: “t”, valor: 12}; //segundo diccionario
var cartas = [as, rey]; //declaración del array de diccionarios

var cartas = [{palo: “c”, valor: 1}, {palo: “t”, valor: 12}]; //array de diccionarios en una sola línea

Para leer y actualizar información, debemos tener en cuenta que tratamos con un array.

cartas[0].palo; //muestra el valor de la clave “palo” del primer elemento del array
cartas[0].palo = “t”; //asigna un nuevo valor a la clave “palo” del primer elemento del array

Diccionario de arrays

Contiene arrays en vez de valores simples, manteniendo los pares clave-valor. Pueden definirse los arrays por separado, y luego incluirlos en el diccionario; o declararlo todo en la misma variable.

var baraja1 = [“copa”, “oro”, “espada”, “basto”]; //primer array
var baraja2 = [“corazón”, “diamante”, “trébol”, “pica”]; //segundo array
var palos = {bar1: baraja1, bar2: baraja2}; //declaración del diccionario de arrays

var palos = {spanish: [“copa”, “oro”, “espada”, “basto”], poker: [“corazón”, “diamante”, “trébol”, “pica”]}; //diccionario de arrays en una sola línea

Para leer y actualizar información, habría que combinar lo ya visto anteriormente. Por ejemplo:

palos.poker[3]; //muestra el valor (“pica”) del último elemento del array “poker”
palos.poker[3] = “picas”; //asigna un nuevo valor (“picas”) en el último elemento del array “poker”

Pin It en Pinterest