Array functions

map : transformer chaque élément

map appelle une fonction pour chaque élément et construit un nouveau tableau de même longueur. La fonction doit renvoyer la nouvelle valeur.

Transformer, sélectionner et additionner

const prix = [12, 8, 15];
console.log(prix.map(montant => montant * 2));
console.log(prix.filter(montant => montant >= 12));
console.log(prix.reduce((total, montant) => total + montant, 0));
console.log(prix);

Sorties : [24, 16, 30], [12, 15], 35, puis [12, 8, 15]. Le tableau source garde ici ses valeurs.

filter : sélectionner des éléments

La fonction de rappel renvoie un résultat vrai pour les éléments conservés. Le nouveau tableau peut être vide ; son ordre reste celui de la source. Dans un portfolio, projets.filter(projet => projet.publie) sélectionne les fiches publiées. Filtrez toujours la source si l’utilisateur peut ensuite effacer ou modifier son filtre.

reduce : calculer une valeur accumulée

Le premier paramètre de la fonction est l’accumulateur ; le second, l’élément courant. Dans le calcul précédent, 0 est la valeur initiale : les valeurs successives de l’accumulateur sont 12, 20 et 35. Avec un tableau vide, le résultat reste 0. Sans valeur initiale, reduce échoue sur un tableau vide.

find, some et every

const projets = [{ id: 4, publie: true }, { id: 9, publie: false }];
console.log(projets.find(p => p.id === 9)); // { id: 9, publie: false }
console.log(projets.some(p => p.publie)); // true
console.log(projets.every(p => p.publie)); // false

find renvoie le premier élément correspondant ou undefined ; some indique si au moins un élément convient ; every exige que tous conviennent. filter renvoie toujours un tableau, même pour un seul résultat.

Les méthodes qui modifient le tableau

MéthodeEffetValeur renvoyée
push(valeur)Ajoute à la finNouvelle longueur
pop()Retire le dernierÉlément retiré
splice(index, nombre)Retire à partir d’un indiceTableau des éléments retirés
sort(comparateur)Trie sur placeMême tableau
slice(debut, fin)Copie une portion, fin exclueNouveau tableau
const valeurs = [10, 2, 30];
const triees = [...valeurs].sort((a, b) => a - b);
console.log(triees); // [2, 10, 30]
console.log(valeurs.slice(0, 2)); // [10, 2]

Sans comparateur, sort compare des représentations textuelles : [10, 2, 30] ne serait pas trié numériquement. Une nouvelle collection peut encore contenir les mêmes objets : ne modifiez pas leurs propriétés dans map si vous souhaitez conserver la source.