Data
const array = [15, 15, 9, 15, 14, 7, 16, 16, 29];
console.log(array) // affiche valeurs
console.table(array) // si besoin
Remarques
⚠️ Pourquoi utiliser const plutôt que let pour un tableau ?
🥷🏽Parce que le tableau ne change pas d’identité
const array= [12, 15, 9…]; signifie « La variable notes pointera toujours vers ce tableau-là. »
🥷🏽le contenu du tableau peut être modifié, on ne peut pas faire
❌ array= [20,20,20 …];
10 questions/réponses
Quelle est la longueur du tableau ?
array.length;
En JS, undefined signifie :
« Cette variable ou cette case n’a pas de valeur définie.
0n pourrait écrire à la place de notes.length le code suivant :
let longueur = 0;
for (let i = 0; array[i] !== undefined; i++) {
longueur = longueur + 1;
}
Quelle est la première/dernière note ?
let premiere = array[0];
let derniere = array[array.length - 1];
On voit l'intérêt d'utiliser les propriétés dynamiques du tableau, on pourrait écrire également !
let lastIndex = 0;
for (let i = 0; array[i] !== undefined; i++) {
lastIndex = i;
}
let derniere = array[lastIndex];
La moyenne des notes
let somme = 0;
let count = 0;
for (let index = 0; index < array.length; index++) {
const element = array[index];
somme += element;
count++;
}
let moyenne = somme / count;
console.log(moyenne); // Output: 15.11
Max
let max = array[0];
for (let index = 1; index < array.length; index++) {
const element = array[index];
if (element > max) {
max = element;
}
}
console.log(`max: ${max}`); // Output: 29
Remarque : Avez-vous remarqué la valeur du début de la boucle !
Occurrence d'une note 15
let count15 = 0;
for (let index = 0; index < array.length; index++) {
const element = array[index];
if (element === 15) {
count15++;
}
}
console.log(`occurrence de 15: ${count15}`); // Output: 3
// console.log(`occurrence de 15: ${count15?count15:"undefined, le tableau est vide"}`); // Output: 3
Note la plus fréquente
let mostFrequent = array[0];
let maxCount = 1;
for (let i = 0; i < array.length; i++) {
let count = 0;
for (let j = 0; j < array.length; j++) {
if (array[j] === array[i]) {
count++;
}
}
if (count > maxCount) {
maxCount = count;
mostFrequent = array[i];
}
}
console.log(`valeur la plus fréquente: ${mostFrequent}`); // Output: 15
Nombre d'admissions : note>=10
let countAdmitted = 0;
for (let index = 0; index < array.length; index++) {
const note= array[index];
if (note >= 10) {
countAdmitted++;
}
}
console.log(`nombre d'admissions: ${countAdmitted}`); // Output: 7
Plus intéressant !
La présence des objets facilite le code !
Voici la représentation d'un objet {passable}.
const passable = { nom: "Passable", min: 10, max: 12, count: 0 };
On peut structurer les objets mentions dans un tableau de mentions.
let mentions = [
{ nom: "Passable", min: 10, max: 12, count: 0 },
{ nom: "Assez bien", min: 12, max: 14, count: 0 },
{ nom: "Bien", min: 14, max: 16, count: 0 },
{ nom: "Très bien", min: 16, max: 18, count: 0 },
{ nom: "Excellent", min: 18, max: Infinity, count: 0 }
];
for (let i = 0; i < array.length; i++) {
const note = array[i];
for (let j = 0; j < mentions.length; j++) {
if (note >= mentions[j].min && note < mentions[j].max) {
mentions[j].count++;
break;
}
}
}
console.table(mentions);
Toutes les occurrences de chaque note
🥷🏽Génial : un objet est dynamique. Il est vide au début d'un programme et comme un tableau, on le remplit au fur et à mesure.
// toutes les occurrences de chaque note
let occurrences = {};
for (let i = 0; i < array.length; i++) {
const note = array[i];
if (occurrences[note]) {
occurrences[note]++;
} else {
occurrences[note] = 1;
}
}
console.log("Occurrences de chaque note :", occurrences);
La boucle For of
Notez la différence entre les deux itérations suivantes !
🪛Les fonctions
L'outil indispensable à tous les fainéants !
Objectifs
Pour montrer la naissance naturelle d’une fonction, nous allons
- écrire un code pour chercher une valeur précise (ex : 0)
- puis un autre pour chercher une autre valeur (ex : 20)
- constater que c’est exactement le même algorithme
- factoriser en créant notre propre fonction myIncludes.
🎯 1. Premier cas : rechercher si le tableau contient la note 0
let found = false;
for (let i = 0; i < array.length; i++) {
if (array[i] === 0) {
found = true;
}
}
console.log(found);
Remarque
🔧 Version améliorée du code
✅ 1. On sort dès qu’on a trouvé la valeur
Pas besoin de continuer la boucle si la valeur est déjà trouvée.
let found = false;
for (let i = 0; i < array.length; i++) {
if (array[i] ===0) {
found = true;
break; // on arrête la boucle immédiatement
}
}
console.log(found);
🎯 2. Deuxième cas : rechercher si le tableau contient la note 20
let found = false;
for (let i = 0; i < array.length; i++) {
if (array[i] === 20) {
found = true;
break;
}
}
console.log(found);
… 🎯 10. 10 cas : rechercher si le tableau contient la note 10
🧙🏽♂️« Regardez bien : on a recopié exactement le même algorithme.
La seule chose qui change… c’est la valeur recherchée.
Donc on va éviter de dupliquer du code et créer une fonction. »
🥷🏽🥷🏽🥷🏽🥷🏽🥷🏽🥷🏽Création de la fonction myIncludes
On déclare une fonction avec deux paramètres :
le tableau
la valeur recherchée
function myIncludes(array, value) {
for (let i = 0; i < array.length; i++) {
if (array[i] === value) {
return true;
}
}
return false;
}
Remarque : notez la différence pour sortir d'une boucle et d'une fonction.
Avancée
🥷🏿On peut rechercher une valeur à partir d'un index !
function myIncludes(array, value, fromIndex = 0) {
if (fromIndex < 0) {
fromIndex = array.length + fromIndex;
if (fromIndex < 0) fromIndex = 0;
}
for (let i = fromIndex; i < array.length; i++) {
if (array[i] === value) {
return true;
}
}
return false;
}
Bilan
Nous ne sommes pas des🦜
console.log(myIncludes(array, -1));
console.log(myIncludes(array, 15));
console.log(myIncludes(array, 5));
console.log(myIncludes(array, 16));
console.log(myIncludes(array, 20));
remplace 40 lignes de code !
Recherche et développement
L'aventure n'est pas terminée, en effet comment chercher des valeurs positives ou encore plus grande que 10 ?