Hoy · Hoja de ruta
- 1. Aprende: Cómo se guarda una lista, cómo se accede a sus elementos y cómo se modifica.
- 2. Haz: Construye la lista de productos de tu catálogo y opera sobre ella.
- 3. Comprueba: Distingues los métodos que modifican el array de los que devuelven uno nuevo.
Antes de empezar · 5 minutos, sin apuntes
- En la sesión 6 usaste tres listas paralelas. ¿Qué problema tiene eso?
- ¿Cómo pedirías «el tercer producto»?
- ¿Qué pasa si pides el elemento número cien de una lista de tres?
Una lista ordenada de valores
const categorias = ["teclados", "ratones", "monitores"];
categorias[0] // "teclados" ← se empieza a contar en cero
categorias.length // 3
categorias[2] // "monitores"
categorias[99] // undefined ← no da error
categorias.at(-1) // "monitores" ← el último, sin calcular índices
Que pedir un índice inexistente devuelva undefined en lugar de fallar es cómodo y peligroso a partes iguales: el programa sigue, y el undefined viaja hasta reventar tres funciones más allá.
Añadir, quitar y buscar
const lista = ["teclados", "ratones"];
lista.push("monitores"); // añade al final → 3
lista.pop(); // quita el último → "monitores"
lista.unshift("cables"); // añade al principio
lista.shift(); // quita el primero
lista.includes("ratones"); // true
lista.indexOf("ratones"); // 1, o -1 si no está
Los que modifican y los que no
Distingue mutar de devolver
Algunos métodos cambian el array original —push, pop, splice, sort, reverse— y otros devuelven uno nuevo sin tocarlo: slice, concat, map, filter.
El error clásico: ordenar «una copia» que en realidad era el mismo array, y descubrir después que el catálogo original quedó desordenado para todo el programa. Ante la duda, copia primero.
const original = [3, 1, 2];
const ordenado = [...original].sort(); // copia y ordena la copia
original; // [3, 1, 2], intacto
Los tres puntos, el operador de propagación, copian los elementos en un array nuevo.
Recorrer con forEach
categorias.forEach((categoria, indice) => {
console.log(`${indice + 1}. ${categoria}`);
});
forEach recorre y no devuelve nada: sirve para «haz algo con cada uno». Cuando lo que quieres es obtener otra lista, el método es map, que viene en la sesión siguiente.
Tarea 10 · El catálogo como lista
Crea js/datos.js:
- Declara un array con al menos ocho nombres de producto de tu tema.
- Otro con sus precios, en el mismo orden.
- Escribe funciones para añadir, quitar y buscar un producto.
- Ordena una copia por precio sin alterar el original, y demuéstralo.
- Escribe una función que devuelva los tres primeros.
Checkpoint · fin de la sesión 10
- Accedes a los elementos por índice y conoces
length. - Distingues los métodos que mutan de los que devuelven.
- Copias un array antes de ordenarlo.
- Sabes que un índice inexistente da
undefined, no un error.
Antes de cerrar · 2 minutos, sin mirar
- ¿Qué índice tiene el primer elemento?
- Nombra dos métodos que muten y dos que no.
- ¿Qué hace
[...lista]?
Ver respuestas
1 · El cero.
2 · Mutan push y sort; no mutan slice y map.
3 · Crea un array nuevo con los mismos elementos: una copia superficial.