Travailler avec les drapeaux en JavaScript
Maintenant, nous allons apprendre à travailler avec les drapeaux.
Un drapeau est une variable spéciale qui
ne peut prendre que deux valeurs : true
et false. À l'aide de drapeaux, on peut résoudre
des tâches vérifiant l'absence de quelque chose :
par exemple, on peut vérifier qu'un tableau
ne contient pas d'élément avec une certaine valeur. Commençons.
Résolvons la tâche suivante : un tableau
de nombres est donné, il faut vérifier s'il contient
un élément avec la valeur 3 ou non. S'il
y en a - affichez '+++', s'il n'y en a pas -
affichez '---'.
Pour commencer, essayons d'afficher '+++'.
Pour cela, parcourons tous les éléments de notre tableau
et demandons avec un if si l'élément courant
est égal à la valeur 3. S'il est égal - affichons
'+++' :
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
}
}
Mais notre solution n'est pas très bonne : car si
dans le tableau il n'y a pas une seule valeur 3,
mais plusieurs, alors '+++' s'affichera plusieurs
fois. Modifions notre tableau (faisons
deux éléments avec la valeur 3) et assurons-nous-en :
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // affichera plusieurs fois
}
}
Corrigeons le problème : terminons la boucle avec
break, si l'élément est déjà trouvé :
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
break; // terminons la boucle
}
}
Essayons maintenant de faire en sorte que,
s'il n'y a aucun élément avec la valeur
3 dans le tableau, '---' soit affiché. Une idée fausse
courante serait d'ajouter else à
notre if - dans ce cas, '---' sera
affiché pour tous les éléments qui ne sont pas
3 :
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // affiché sur l'élément 3
} else {
console.log('---'); // affiché sur les éléments 1, 2, 4, 5
}
}
Ainsi, l'idée d'ajouter else est une mauvaise
idée, qui ne fonctionne pas. Pour résoudre des tâches de ce
type (ces tâches sont assez
courantes), on utilise ce qu'on appelle des drapeaux.
Comme mentionné ci-dessus, un drapeau est une
variable qui ne peut prendre que deux valeurs :
true ou false.
Alors, créons une variable flag
avec cette signification : si elle est égale à true,
alors le tableau contient l'élément 3, et si
elle est à false, alors cet élément n'est pas présent.
Initialement, mettons la variable flag
à la valeur false - c'est-à-dire que nous considérerons
que l'élément 3 n'est pas dans le tableau :
let arr = [1, 2, 3, 4, 5];
let flag = false; // considérons que l'élément 3 n'est pas dans le tableau
Ensuite, lançons une boucle avec un if comme nous l'avons fait
auparavant. Si la boucle détecte que le tableau
contient l'élément 3 - alors mettons la variable flag
à la valeur true et sortons de la boucle
avec break :
let arr = [1, 2, 3, 4, 5];
let flag = false; // considérons que l'élément 3 n'est pas dans le tableau
for (let elem of arr) {
if (elem == 3) {
flag = true; // l'élément est présent - redéfinissons la variable flag
break; // sortons de la boucle
}
}
La réponse à la question, savoir si le tableau contient 3
ou non, nous ne pouvons la donner qu'après la boucle.
Et cette réponse, nous l'avons déjà : après la boucle,
la variable flag pourrait être restée à false
ou avoir changé sa valeur en true,
si la boucle a détecté 3 dans le tableau :
let arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
// ici la variable flag est égale à true ou à false
Maintenant, après la boucle, nous pouvons faire un if qui
regardera la variable flag et affichera
à l'écran '+++' ou '---' :
let arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
if (flag === true) {
console.log('+++');
} else {
console.log('---');
}
Un tableau est donné :
let arr = ['a', 'b', 'c', 'd', 'e'];
Vérifiez que ce tableau contient l'élément
'c'. S'il y en a - affichez '+++',
et s'il n'y en a pas - affichez '---'.
Écrivez un code qui vérifiera si un nombre est premier ou non. Un nombre premier n'est divisible que par un et par lui-même, et n'est divisible par aucun autre nombre.