Pages

Mon filtre à moi

 

Projet : Aide

Les données

let tabPers = [
  {
    nom: "Brusel",
    sex : "m",
    age: 35
  },
  {
    nom: "Dupont",
    sex : "n",
    age: 36
  },  
{
    nom: "Toto",
    sex : "f",
    age: 40
  },
  {
    nom: "Dupont",
    sex : "m",
    age: 10
  },
];

Ainsi
tabPers[1]
<{nom: "Dupont", sex: "n", age: 36}

tabPers[1]["nom"]
<"Dupont"

tabPers[1].nom
<"Dupont"

- Ecrire la boucle for classique affichant :
  • "0 : 35 ans"
  • "1 : 36 ans"
  • "2 : 40 ans"
  • "3 : 43 ans"
for (let i=0; i<  ? ; i++){
 console.log(`${i} : ?  ans`);
}

- Réécrire la boucle avec le for of

let i = 1;
for (let pers of tabPers) {
  console.log(`${i++} : ?  ans`);
}

- Utilisation la destructuration
let i = 1;
for (let { ? } of tabPers) {
  console.log(`${i++} : ${a} ans`);
}

- Pour info (niveau avancé) : utilisation de Object.entries
for (var [cle, valeur] of Object.entries(tabPers)){
   console.log(`${cle} : ${valeur.age} ans`);
}

- Création d'un tableau des personnes de sex h

let tabPersF = [];
for (let {age,sex} of tabPers) {
        if ( ? ) {
tabPersF.push( ? ); // stocker l'age
}
}
console.log(tabPersF);

- Création d'un tableau des personnes de sex f

// inspirez vous du code précédent

- ATTENTION c'est ici que tout commence

Comparez les deux écritures, extraire le code commun et le mettre dans une fonction filtre

function filtre( ? ){
let tabR = [];
     
 // code ?
return tabR;
}

Passons maintenant à autre chose qu'un filtre sur le sex :

- Création d'un tableau en utilisant la fonction filtre des

  • personnes majeurs 
  • personnes mineurs
  • personnes de nom "Dupont"


Réfléchissez sur la souplesse de votre code.

- Soit les deux fonctions

function femme(person) {
  return (person.sex === "f");
}

function homme(person) {
  return (person.sex === "m");
}

Essayer d’écrire une fonction de filtre qui renvoie le tableau filtré par une fonction passée en argument !

function filter(array, fx) {
  let passed = [];

  ?

  return passed;
}


Appel de la fonction
filter(tabPers,femme);
filter(tabPers,homme);