Quand on travaille avec des tableaux, on veut parfois exécuter du code pour chaque valeur du tableau. C'est ce qu'on appelle itérer sur le tableau, ou le parcourir.
Ici, on va s'intéresser au cas où tu ne veux pas modifier le tableau au passage. Pour transformer des tableaux, consulte plutôt le concept Transformations de tableaux.
for
La façon la plus simple d'itérer sur un tableau est d'utiliser une boucle for ; voir le concept Boucles for.
const numbers = [6.0221515, 10, 23];
for (let i = 0; i < numbers.length; i++) {
console.log(numbers[i]);
}
// => 6.0221515
// => 10
// => 23
for...of
Quand tu veux travailler directement avec la valeur à chaque itération et que tu n'as pas besoin de l'indice du tout, tu peux utiliser une boucle for...of.
for...of fonctionne comme la boucle for de base montrée plus haut, mais au lieu de devoir gérer l'indice comme variable de la boucle, c'est la valeur qui t'est fournie directement.
const numbers = [6.0221515, 10, 23];
// Because re-assigning number inside the loop will be very
// confusing, disallowing that via const is preferable.
for (const number of numbers) {
console.log(number);
}
// => 6.0221515
// => 10
// => 23
Tout comme dans les boucles for classiques, tu peux utiliser continue pour arrêter l'itération en cours et break pour arrêter complètement l'exécution de la boucle.
forEach
Chaque tableau possède une méthode forEach qui permet de parcourir ses éléments.
forEach prend une fonction de rappel en paramètre.
La fonction de rappel est appelée une fois pour chaque élément du tableau.
L'élément courant, son indice et le tableau complet sont passés à la fonction de rappel en arguments.
Souvent, seuls l'élément courant ou l'indice sont utilisés.
const numbers = [6.0221515, 10, 23];
numbers.forEach((number, index) => console.log(number, index));
// => 6.0221515 0
// => 10 1
// => 23 2
Il n'y a aucun moyen d'arrêter l'itération une fois que la boucle forEach a commencé.
Les instructions break et continue n'existent pas dans ce contexte.
Elyse est une magicienne en herbe et elle a besoin d'analyser son jeu de cartes de bien des façons. Pour que les choses restent simples, elle n'utilise que des cartes dont les valeurs vont de 1 à 10.
Elyse veut savoir combien de cartes d'un type particulier elle a dans son jeu.
Écris une fonction cardTypeCheck qui prend deux paramètres : un tableau de cartes (le jeu d'Elyse) et le type de carte à compter.
La fonction doit utiliser forEach et renvoyer le nombre de cartes du type indiqué dans le jeu.
const cardType = 3;
cardTypeCheck([1, 2, 3, 4], cardType);
// => 1
Pour un autre tour, Elyse a besoin de savoir combien de cartes impaires ou paires se trouvent dans son jeu.
Implémente une fonction determineOddEvenCards qui prend deux paramètres : un tableau de cartes (le jeu d'Elyse) et un booléen (true correspond à « pair » et false à « impair »).
Cette fonction doit renvoyer un seul nombre : le nombre de cartes impaires ou paires présentes dans le jeu (selon la valeur du second argument).
Pour t'entraîner, utilise cette fois une boucle for...of dans l'implémentation de la fonction.
determineOddEvenCards([1, 2, 3, 1, 5, 6], true);
// => 2
determineOddEvenCards([1, 2, 3, 1, 5, 6], false);
// => 4
Inscris-toi sur Exercism pour apprendre et maîtriser JavaScript avec 37 concepts159 exercices, et un vrai mentorat humain, le tout gratuitement.