Volver a JavaScript Básico

Arrays y Objetos

Los arrays y objetos son las estructuras de datos principales en JavaScript.

Arrays

const frutas = ["manzana", "banana", "cereza"]; // Acceso frutas[0]; // "manzana" frutas.at(-1); // "cereza" (moderno, índice negativo) frutas.length; // 3 // Métodos mutables frutas.push("dátil"); // Agregar al final frutas.pop(); // Eliminar del final frutas.unshift("aguacate"); // Agregar al inicio frutas.shift(); // Eliminar del inicio frutas.splice(1, 1, "arándano"); // Reemplazar en índice

Iteración de Arrays

const numeros = [1, 2, 3, 4, 5]; // forEach — solo efectos secundarios numeros.forEach(n => console.log(n)); // map — transformar cada elemento const cuadrados = numeros.map(n => n ** 2); // [1, 4, 9, 16, 25] // filter — mantener elementos que cumplen condición const impares = numeros.filter(n => n % 2 !== 0); // [1, 3, 5] // find — primer elemento que coincide const primero4 = numeros.find(n => n > 3); // 4 // reduce — reducir a un único valor const suma = numeros.reduce((acc, n) => acc + n, 0); // 15 // some / every numeros.some(n => n > 4); // true numeros.every(n => n > 0); // true // flat & flatMap [[1,2],[3,4]].flat(); // [1, 2, 3, 4]

Spread y Desestructuración de Arrays

const a = [1, 2, 3]; const b = [4, 5, 6]; // Combinar arrays const combinado = [...a, ...b]; // [1,2,3,4,5,6] // Clonar (superficial) const copia = [...a]; // Desestructurar const [cabeza, ...cola] = a; console.log(cabeza); // 1 console.log(cola); // [2, 3]

Objetos

const usuario = { id: 1, nombre: "Alice", correo: "[email protected]", direccion: { ciudad: "Ciudad de México", pais: "México" } }; // Acceso usuario.nombre; // "Alice" usuario["correo"]; // "[email protected]" usuario.direccion.ciudad; // "Ciudad de México" // Agregar / modificar / eliminar usuario.puntuacion = 100; usuario.nombre = "Alicia"; delete usuario.puntuacion;

Métodos de Objeto

const config = { debug: true, puerto: 3000, host: "localhost" }; Object.keys(config); // ["debug", "puerto", "host"] Object.values(config); // [true, 3000, "localhost"] Object.entries(config); // [["debug", true], ...] Object.freeze(config); // Hacer inmutable Object.assign({}, config); // Clonar superficial // Spread (preferido moderno) const fusionado = { ...config, puerto: 8080 }; const clon = { ...config };

Desestructuración de Objetos

const { nombre, correo, direccion: { ciudad } } = usuario; // Con valores por defecto y renombrar const { rol = "visitante", nombre: nombreUsuario } = usuario; // En parámetros de función function mostrarUsuario({ nombre, correo, rol = "visitante" }) { console.log(`${nombre} (${rol}): ${correo}`); }

Encadenamiento Opcional y Coalescencia Nula

const datos = null; // Encadenamiento opcional — acceso profundo seguro console.log(datos?.usuario?.nombre); // undefined (sin error) console.log(usuario?.direccion?.ciudad); // "Ciudad de México" // Coalescencia nula — valor por defecto cuando null/undefined const puerto = config.puerto ?? 3000; const etiqueta = usuario.apodo ?? usuario.nombre;

Patrón: Usa ?. y ?? juntos para navegar datos anidados de forma segura con valores por defecto.