tab.reduce
tab.reduce(function([result, value, index, array]){}, init)
Cette fonction retourne une valeur calculée à partir de toutes les valeurs du tableau.
la valeur retournée par la fonction correspond à la valeur stocké dans result.
result : valeur d'accumulation retournée par la méthode.
init : valeur d'initialisation de result.
value : représente un élément du tableau à chaque tour de boucle
index : représente l'index de l'élément du tableau à chaque tour de boucle (facultatif)
array :: représente le tableau lui-même (facultatif)
Exemple : Somme des nombres du tableau
See the Pen cours-js-array-reduce-1 by BCMM-W2D (@bcmm-w2d) on CodePen.
Équivalent avec fonction fléchée
const listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
const somme = listeNombres.reduce((somme, nombre) => somme + nombre, 0);
Équivalent avec forEach
const listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
const tab = [];
let somme = 0;
listeNombres.forEach(function (nombre) {
somme += nombre;
});
Équivalent avec for of
const listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
let somme = 0;
for (let nombre of listeNombres) {
somme += nombre;
}
Équivalent avec for
const listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
let somme = 0;
for (let i = 0; i < listeNombres.length; i++) {
somme += listeNombres[i];
}
Exemple : Somme des nombres impairs
See the Pen cours-js-array-reduce-2 by BCMM-W2D (@bcmm-w2d) on CodePen.
Équivalent avec fonction fléchée
const listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
const somme = listeNombres.reduce((somme, nombre) => nombre % 2 ? somme + nombre : somme, 0);
Équivalent avec forEach
const listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
let somme = 0;
listeNombres.forEach(function (nombre) {
somme += (nombre % 2) ? nombre : 0;
});
Équivalent avec for of
const listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
let somme =0;
for (let nombre of listeNombres) {
somme += (nombre % 2) ? nombre : 0;
}
Équivalent avec for
const listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
let somme = 0;
for (let i = 0; i < listeNombres.length; i++) {
somme += (listeNombres[i] % 2) ? listeNombres[i] : 0;
}
Exemple : Combien des nombres impairs
See the Pen cours-js-array-reduce-3 by BCMM-W2D (@bcmm-w2d) on CodePen.
Équivalent avec fonction fléchée
const listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
const cpt = listeNombres.reduce((cpt, nombre) => cpt + (nombre % 2), 0);
Équivalent avec forEach
const listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
let cpt = 0;
listeNombres.forEach(function (nombre) {
cpt += nombre % 2;
});
Équivalent avec for of
const listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
let cpt = 0;
for (let nombre of listeNombres) {
cpt += nombre % 2;
}
Équivalent avec for
const listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
let cpt = 0;
for (let i = 0; i < listeNombres.length; i++) {
cpt += listeNombres[i] % 2;
}
Exemple : Somme des longueurs des mots
See the Pen cours-js-array-reduce-4 by BCMM-W2D (@bcmm-w2d) on CodePen.
Équivalent avec fonction fléchée
const listeMots = ['bonjour', 'hello', 'matin', 'soir', 'journée', 'maintenant', 'après'];
const somme = listeMots.reduce((somme, mot) => somme + mot.length, 0);
Équivalent avec forEach
const listeMots = ['bonjour', 'hello', 'matin', 'soir', 'journée', 'maintenant', 'après'];
let somme = 0;
listeMots.forEach(function (mot) {
somme += mot.length;
});
Équivalent avec for of
const listeMots = ['bonjour', 'hello', 'matin', 'soir', 'journée', 'maintenant', 'après'];
let somme = 0;
for (let mot of listeMots) {
somme += mot.length;
}
Équivalent avec for
const listeMots = ['bonjour', 'hello', 'matin', 'soir', 'journée', 'maintenant', 'après'];
let somme = 0;
for (let i = 0; i < listeMots.length; i++) {
somme += listeMots[i].length;
}
Exemple : Combien de majeurs d'une liste de tableaux associatifs (objet)
See the Pen cours-js-array-reduce-5 by BCMM-W2D (@bcmm-w2d) on CodePen.
Équivalent avec fonction fléchée
const listePersonnes = [
{id : 8, nom : 'Aule', prenom : 'Lucie', age : 45},
{id : 9, nom : 'Ball', prenom : 'Annie', age : 24},
{id : 10, nom : 'Bon', prenom : 'Jean', age : 65},
{id : 11, nom : 'Braisile', prenom : 'France', age : 13}
];
const cpt = listePersonnes.reduce((cpt, personne) => personne.age >= 18 ? ++cpt : cpt, 0);
++cpt : attention, il faut pré-incrémenter sinon cpt est augmenté de 1 qu'après avoir été retourné.
Équivalent avec forEach
const listePersonnes = [
{id : 8, nom : 'Aule', prenom : 'Lucie', age : 45},
{id : 9, nom : 'Ball', prenom : 'Annie', age : 24},
{id : 10, nom : 'Bon', prenom : 'Jean', age : 65},
{id : 11, nom : 'Braisile', prenom : 'France', age : 13}
];
let cpt = 0;
listePersonnes.forEach(function (personne) {
if(personne.age >= 18) cpt++;
});
cpt++ : ici la post-incrémentation peut fonctionner.
Équivalent avec for of
const listePersonnes = [
{id : 8, nom : 'Aule', prenom : 'Lucie', age : 45},
{id : 9, nom : 'Ball', prenom : 'Annie', age : 24},
{id : 10, nom : 'Bon', prenom : 'Jean', age : 65},
{id : 11, nom : 'Braisile', prenom : 'France', age : 13}
];
let cpt = 0;
for (let personne of listePersonnes) {
if(personne.age >= 18) cpt++;
}
Équivalent avec for
const listePersonnes = [
{id : 8, nom : 'Aule', prenom : 'Lucie', age : 45},
{id : 9, nom : 'Ball', prenom : 'Annie', age : 24},
{id : 10, nom : 'Bon', prenom : 'Jean', age : 65},
{id : 11, nom : 'Braisile', prenom : 'France', age : 13}
];
let cpt = 0;
for (let i = 0; i < listePersonnes.length; i++) {
if(listePersonnes[i].age >= 18) cpt++;
}
Attention : Valeur initiale
Si vous ne mettez pas de valeur initiale, c'est la première valeur du tableau qui est utilisée. La boucle de la méthode commencera donc sur la deuxième valeur.
See the Pen cours-js-array-reduce-6 by BCMM-W2D (@bcmm-w2d) on CodePen.
Cette fonction retourne 10 : 5 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 = 10