Pages

Plus jamais de boucle

Boucle sur le tableau


function forEach(array, fx) {

  for (var i = 0; i < array.length; i++)//for of

    fx(array[i]);

filtre sur un tableau

function filter(array, test) {
  let passed = [];
  for (let val of array) {
    if (test(val))
      passed.push(val);
  }
  return passed;
}


Plus en détail :

dernier essai pour les fonctions : trans, filtre et Compagnie !

... en action


code 

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);


DM

 



Commencez par chercher tous les films d'un réalisateur !

👉 start now

ES6

Décomposition : 

https://dupontes6.blogspot.com/p/decomposition.html


Pour les débutants (ou rappels) : 



Lien sur le cours ES6

https://dupontes6.blogspot.com/ Cours de base :

Travail Maison

Soit un tableau de films 

[ { name: String, director: String, boxOffice: Number }, ...]  Code

le tableau par ordre alphabétique de noms de films 

les films d'un même réalisateur

le nombre d'entrées de l'ensemble des films

l'ensemble des réalisateurs 

un objet donnant pour chaque réalisateur un tableau de ses films

un objet donnant pour chaque réalisateur le nombre d'entrées 

un tableau des films [ {name:String, sales:Number}, …]