Mètodes Avançats d'Arrays: map, filter i reduce
JavaScript proporciona mètodes molt potents per treballar amb arrays de manera funcional i eficient. En aquest capítol aprendrem a utilitzar:
map()
per transformar arraysfilter()
per seleccionar elementsreduce()
per acumular valors
map()
: transformar valors
Transforma cada element d’un array i retorna un nou array amb el mateix nombre d'elements.
const noms = ["Joan", "Anna", "Pau"];
const enMajuscules = noms.map((nom) => nom.toUpperCase());
Exemples
const nums = [1, 2, 3];
const dobles = nums.map((x) => x * 2); // [2, 4, 6]
const tlf = ["644444444", "644444443"];
const ambPrefix = tlf.map((t) => "(+34) " + t);
Activitats amb map()
- Pujar cada número d’un array de 1 a 5 al doble.
- Passar tots els noms d’un array a majúscules.
- Convertir temperatures de Celsius a Fahrenheit.
- Calcular la longitud de cada títol de llibres.
- Afegir 'Sr./Sra.' davant dels noms d’autors.
- Redondejar números a dos decimals.
filter()
: filtrar valors
Crea un nou array amb només els elements que compleixen una condició.
const nums = [1, 2, 3, 4, 5];
const parells = nums.filter((x) => x % 2 === 0); // [2, 4]
const noms = ["juan", "ana", "carlos"];
const ambJu = noms.filter((nom) => nom.includes("ju"));
Activitats amb filter()
- Obtenir només els números parells d’un array.
- Buscar noms que incloguin una subcadena.
- Filtrar paraules més llargues de 6 caràcters.
reduce()
: reduir a un valor
Executa una funció acumuladora sobre tots els elements i retorna un sol valor.
const numeros = [1, 2, 3, 4, 5];
const suma = numeros.reduce((acc, val) => acc + val, 0); // 15
Exemples
Trobar el màxim:
const max = numeros.reduce((acc, val) => Math.max(acc, val));
Eliminar duplicats:
const unics = numeros.reduce(
(acc, val) => (acc.includes(val) ? acc : [...acc, val]),
[]
);
Activitats amb reduce()
- Calcular la suma total d’un array.
- Trobar el valor màxim d’un array.
- Trobar el valor mínim d’un array.
- Eliminar duplicats d’un array.
Comparativa map vs filter vs reduce
Mètode | Funció | Retorn |
---|---|---|
map() | Transformar cada element | Nou array |
filter() | Seleccionar elements que compleixen | Nou array (menys o igual) |
reduce() | Acumular en un sol valor final | Un únic valor |
Quan usar for
?
Tot i que map
, filter
i reduce
són molt potents, encara podem utilitzar for
quan:
- Necessitem modificar l’array original
- Cal iterar en patrons no lineals (
i += 3
) - Volem iterar sobre múltiples arrays
- Necessitem operacions complexes amb condicions múltiples
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
for (let i = 0; i < arr1.length; i++) {
console.log(arr1[i] + arr2[i]);
}
Aquest capítol t’ha donat eines fonamentals per tractar arrays com un expert. Aprofitar map
, filter
i reduce
pot fer el teu codi més net, modular i expressiu.