Méthode reduce
La méthode reduce réduit un tableau à
une seule valeur (réduit). Par exemple,
avec cette méthode, on peut facilement trouver la somme
des éléments d'un tableau (c'est-à-dire que le tableau sera réduit
à une seule valeur - la somme des éléments).
Le premier paramètre de la méthode reduce reçoit
une fonction, qui s'exécutera séquentiellement
pour chaque élément du tableau, en commençant par le premier.
On peut passer 4 paramètres à cette fonction.
Si ces paramètres sont présents (ils ne sont pas obligatoires),
alors le premier recevra automatiquement le résultat
intermédiaire, le deuxième recevra l'élément
du tableau, le troisième - son numéro dans le tableau (index),
et le quatrième - le tableau lui-même.
Le résultat intermédiaire est une variable
dans laquelle s'accumulera la valeur
que renverra la méthode reduce lorsque
elle aura parcouru tous les éléments du tableau. Par exemple,
on peut y accumuler séquentiellement la somme
des éléments du tableau : d'abord mettre le premier
élément, lors du passage suivant de la boucle
la somme du premier élément et du deuxième,
lors du passage suivant - la somme du premier, du deuxième et du troisième.
Et ainsi de suite, jusqu'à la fin du tableau.
La fonction que accepte reduce
doit renvoyer la nouvelle valeur du résultat
intermédiaire.
Le deuxième paramètre de la méthode reduce spécifie
la valeur initiale du résultat intermédiaire.
Si elle n'est pas spécifiée, elle sera égale au premier
élément du tableau, et le traitement des éléments commencera
à partir du deuxième élément.
Syntaxe
tableau.reduce(function(résultat intermédiaire, élément, index, tableau) {
return nouveau résultat intermédiaire;
}, valeur initiale);
Exemple
Trouvons la somme des éléments du tableau :
let arr = [1, 2, 3, 4, 5, 6];
let res = arr.reduce(function(somme, elem) {
return somme + elem;
}, 0);
console.log(res);
Résultat de l'exécution du code :
21
Exemple
Trouvons la somme de tous les nombres positifs du tableau :
let arr = [1, -2, -3, 4, 5, -6];
let res = arr.reduce(function(somme, elem) {
if (elem >= 0) {
return somme + elem;
} else {
return somme;
}
}, 0);
console.log(res);
Résultat de l'exécution du code :
10