Pages

au boulot !

 


Data

  1. const array = [15, 15, 9, 15, 14, 7, 16, 16, 29];

  2. console.log(array) // affiche valeurs

  3. 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 ?

  1. 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 : 

  1. let longueur = 0;

  2. for (let i = 0; array[i] !== undefined; i++) {

  3.   longueur = longueur + 1;

  4. }

Quelle est la première/dernière note ?

  1. let premiere = array[0];

  2. 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 ! 

  1. let lastIndex = 0;

  2. for (let i = 0; array[i] !== undefined; i++) {

  3.   lastIndex = i;

  4. }

  5. let derniere = array[lastIndex];


La moyenne des notes

  1. let somme = 0;

  2. let count = 0;


  3. for (let index = 0; index < array.length; index++) {

  4.   const element = array[index];

  5.   somme += element;

  6.   count++;

  7. }

  8. let moyenne = somme / count;

  9. console.log(moyenne); // Output: 15.11


Max

  1. let max = array[0];  

  2. for (let index = 1; index < array.length; index++) {

  3.   const element = array[index];

  4.   if (element > max) {

  5.     max = element;

  6.   }

  7. }

  8. console.log(`max: ${max}`); // Output: 29

Remarque : Avez-vous remarqué la valeur du début de la boucle ! 


Occurrence d'une note 15 

  1. let count15 = 0;

  2. for (let index = 0; index < array.length; index++) {

  3.   const element = array[index];

  4.   if (element === 15) {

  5.     count15++;

  6.   }

  7. }

  8. console.log(`occurrence de 15: ${count15}`); // Output: 3

  9. // console.log(`occurrence de 15: ${count15?count15:"undefined, le tableau est vide"}`); // Output: 3


Note la plus fréquente

  1. let mostFrequent = array[0];

  2. let maxCount = 1; 

  3. for (let i = 0; i < array.length; i++) {

  4.   let count = 0;

  5.   for (let j = 0; j < array.length; j++) {

  6.     if (array[j] === array[i]) {

  7.       count++;

  8.     }

  9.   }

  10.   if (count > maxCount) {

  11.     maxCount = count;

  12.     mostFrequent = array[i];

  13.   }

  14. }

  15. console.log(`valeur la plus fréquente: ${mostFrequent}`); // Output: 15


Nombre d'admissions : note>=10

  1. let countAdmitted = 0;  

  2. for (let index = 0; index < array.length; index++) {

  3.   const note= array[index];

  4.   if (note >= 10) {

  5.     countAdmitted++;

  6.   }

  7. }

  8. 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}.

  1.  const passable = { nom: "Passable", min: 10, max: 12, count: 0 };

 

On peut structurer les objets mentions dans un tableau de mentions.



  1. let mentions = [

  2.   { nom: "Passable", min: 10, max: 12, count: 0 },

  3.   { nom: "Assez bien", min: 12, max: 14, count: 0 },

  4.   { nom: "Bien", min: 14, max: 16, count: 0 },

  5.   { nom: "Très bien", min: 16, max: 18, count: 0 },

  6.   { nom: "Excellent", min: 18, max: Infinity, count: 0 }

  7. ];


  8. for (let i = 0; i < array.length; i++) {

  9.   const note = array[i];


  10.   for (let j = 0; j < mentions.length; j++) {

  11.     if (note >= mentions[j].min && note < mentions[j].max) {

  12.       mentions[j].count++;

  13.       break;

  14.     }

  15.   }

  16. }


  17. 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.

  1. // toutes les occurrences de chaque note

  2. let occurrences = {}; 

  3. for (let i = 0; i < array.length; i++) {

  4.   const note = array[i];

  5.   if (occurrences[note]) {

  6.     occurrences[note]++;

  7.   } else {

  8.     occurrences[note] = 1;

  9.   }

  10. }


  11. console.log("Occurrences de chaque note :", occurrences);


La boucle For of

Notez la différence entre les deux itérations suivantes ! 

let found = false;

for (let i = 0; i < array.length; i++) {

  if (array[i] === value) {

    found = true;

    break;

  }

}


let found = false;

for (const item of array) {

  if (item === value) {

    found = true;

    break;

  }

}




🪛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

  1. let found = false;


  2. for (let i = 0; i < array.length; i++) {

  3.   if (array[i] === 0) {

  4.     found = true;

  5.   }

  6. }


  7. 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.

  1. let found = false;


  2. for (let i = 0; i < array.length; i++) {

  3.   if (array[i] ===0) {

  4.     found = true;

  5.     break; // on arrête la boucle immédiatement

  6.   }

  7. }


  8. console.log(found);


🎯 2. Deuxième cas : rechercher si le tableau contient la note 20

  1. let found = false;


  2. for (let i = 0; i < array.length; i++) {

  3.   if (array[i] === 20) {

  4.     found = true;

  5.     break; 

  6.   }

  7. }


  8. 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


  1. function myIncludes(array, value) {

  2.   for (let i = 0; i < array.length; i++) {

  3.     if (array[i] === value) {

  4.       return true;

  5.     }

  6.   }

  7.   return false;

  8. }


Remarque : notez la différence pour sortir d'une boucle et d'une fonction.

sortie de boucle

sortie de fonction

  1. for (let i = 0; i < array.length; i++) {

  2.   if (array[i] === 20) {

  3.     found = true;

  4.     break; 

  5.   }

  6. }

  1. function myIncludes(array, value) {

  2.   for (let i = 0; i < array.length; i++) {

  3.     if (array[i] === value) {

  4.       return true;

  5.     }

  6.   }

  7.   return false;

  8. }




Avancée

🥷🏿On peut rechercher une valeur à partir d'un index ! 

  1. function myIncludes(array, value, fromIndex = 0) {

  2.   if (fromIndex < 0) {

  3.     fromIndex = array.length + fromIndex;

  4.     if (fromIndex < 0) fromIndex = 0;

  5.   }


  6.   for (let i = fromIndex; i < array.length; i++) {

  7.     if (array[i] === value) {

  8.       return true;

  9.     }

  10.   }

  11.   return false;

  12. }


Bilan

Nous ne sommes pas des🦜

  1. console.log(myIncludes(array, -1)); 

  2. console.log(myIncludes(array, 15)); 

  3. console.log(myIncludes(array, 5)); 

  4. console.log(myIncludes(array, 16)); 

  5. 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 ?