Pages

DM

 Afficher les 12 films de Hayao Miyazaki !

Modifier le code : https://github.com/dupontdenis/fetch.git



API


Navigateur :
https://github.com/dupontdenis/fetch.git

Application :
https://github.com/dupontdenis/useAPIgit.git
https://github.com/dupontdenis/useAPIgit-query.git

Correction DS


  1. const moyenne = function (notes) {

  2.     return notes.reduce((acc, cur) => acc + cur) / notes.length;}


  3. const score = function (etudiant) {

  4.     return moyenne(etudiant.notes)}


  5. const notABS = function (etudiant) {

  6.     return etudiant.notes.every(note => note !== "ABS");}


  7. let etudiantsAclasser = etudiants.filter(notABS);

  8. let classement = etudiantsAclasser.map(function (etudiant) {

  9.     let nom = etudiant.nom

  10.       ,moyenne = score(etudiant);

  11.     return { nom, moyenne }});


  12. classement.sort(function (a, b) {

  13.     if (a.moyenne < b.moyenne) { return 1 }

  14.     else { return -1 }})


  15. classement.forEach(function (etudiant, rang) {

  16.     let current = etudiants.find(({ nom }) => nom == etudiant.nom);

  17.     current.rang = rang + 1;})



LAST CALL for DS

Students for DS 19/11 

please go to this reading 

Application WEB !

 

Objectifs

Transformer notre code en une application.
Découvrir la notion de module.

Définir la fonction createArray

/**
 *
 * @param {number} start The start of the createTab.
 * @param {number} end The end of the createTab.
 * @param {number} step The value to increment or decrement by.
 * @param {boolean} [fromRight] Specify iterating from right to left.
 * @returns {Array} Returns the createTab of numbers.
 */

createTab(10,20) = [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

createTab&(0,9,3) = [ 0, 3, 6 ]

createTab(0,9,3,true) = [ 6, 3, 0 ]


Transformer notre code en une application : http://localhost:3000/



TD : Min Max

 

// pour un tableau simple

const t = [20, 12, 2, 12];
const [min, max] = t.reduce(([min, max], cur) => {

    if (min > cur) min = cur;
    if (max < cur) max = cur;

    return [min, max];

}, [Number.MAX_VALUE, Number.MIN_VALUE]);


//tableau de pers

const etudiants = [
    { nom: "superA", note: 20 },
    { nom: "superB", note: 12 },
    { nom: "superC", note: 2 },
    { nom: "superD", note: 12 },
];

//retourne un tableau de valeurs

const [minE, maxE] = etudiants.reduce(([min, max], { note }) => {

    if (min > note) min = note;
    if (max < note) max = note;

    return [min, max];

}, [Number.MAX_VALUE, Number.MIN_VALUE]);


//retourne un tableau de pointeurs

const [dernier, major] = etudiants.reduce(([dernier, premier], etudiant) => {

    if (dernier.note > etudiant.note) dernier = etudiant;
    if (premier.note < etudiant.note) premier = etudiant;

    return [dernier, premier];

}, [etudiants[0], etudiants[0]]);



//retourne un objet

const { dernier, major } = etudiants.reduce(({ dernier, major }, etudiant) => {

    if (dernier.note > etudiant.note) dernier = etudiant;
    if (major.note < etudiant.note) major = etudiant;

    return { dernier, major };

}, { dernier: etudiants[0], major: etudiants[0] });


Vidéo

Un petit tour du côté des méthodes !

 

Some, every



rappel : destructuration

map

   

   

filter

  

reduce

Some

 

some

Nous connaissons la méthode some ?

La méthode some() teste si au moins un élément du tableau passe le test implémenté par la fonction fournie. Elle renvoie un booléen indiquant le résultat du test.


  1. const T = [41, 23, 65, 43, 57],
  2.    test = (element) => element % 2;

  3. console.log(t.some(test));

Que recherchons nous dans ce tableau avec la fonction test ?

Modifier le code précédent, sans utiliser la négation, pour tester si un élément du tableau est pair.

Donner le code de la fonction some qui teste si au moins un élément du tableau vérifie la fonction test.
  1. const T = [41, 23, 65, 43, 57];
  2.    test = (element) => element % 2;

  3. console.log(some(T,test));

Pourrait on appliquer de telle fonction à des tableaux de vidéos ?

Préparation au DS

 → Cours

  • Rappelez le corps de la fonction filtre vue en cours filtre(array, test)
  • Donner le corps de la fonction some(array, test) qui teste si au moins un élément du tableau en argument passe le test implémenté par la fonction fournie.

→ Exercice

Soit la BD d'animaux, comprenant des 🐶 et des 🐱.

Animals = [

        {name: 'Butters', age: 3, type: '🐶'},

        {name: 'Lizzy', age: 6, type: '🐶'},

        {name: 'Minou', age: 10, type: ''🐱"}, ];


La fonction getAges, calcul la somme des âges des chiens en équivalent humain !

  1. function getAges(array) {
  2.     let sum = 0;
  3.     for (var i = 0; i < array.length; i++){
  4.       if (array[i].type === 'dog'){
  5.         let tempAge = array[i].age;
  6.         sum += (tempAge * 7);
  7.       }
  8.     }
  9.    return sum
  10. }
  • Réécrire la fonction getAges sous la forme let ageDogs = Animal.filter(?).map(?).reduce(?);
  • Donnez également ageCats (pensez à minimiser la taille du code).

→ Exercice

Soit la BD des régions Française

const Régions = [{name: "IDF", villes: [26 200,  120000, ...]}

            , {name: "PACA", villes: [116 703, 65000, ... ]},

...

]

villes est un tableau du nombre d'habitants 👫 pour les villes de plus de 10 000 habitants.

  • Trouver les régions qui ont au moins une ville au dessus de 1 000 000 👫.
  • Donner les deux régions, parmi celles qui ont au moins une ville à plus de 120 000👫, les villes les moins peuplées.
  • Donner un tableau donnant l'écart de population entre la ville la plus peuplée et la moins peuplée pour chaque Région.

TD

code

Ecrire le code pour créer un nouveau tab




Ecrire le code pour modifier le tableau existant




Je suis végétarien !

 


Nous allons utiliser notre fonction de filtre pour retirer les ingrédient qui n'appartiennent pas à un ensemble regroupant ["🐷", "🐑","🐔"].
Nous reviendrons sur cet objet Ensemble qui est très facile d'utilisation.


5 fruits - 5 légumes par jours

 

Commençons l'aventure "5 fruits par jours" en coupant les fruits en 2.

Répétons sur chaque fruit, l'action de 🔪. Pour cela nous utilisons notre fonction forEach !

voir code "Ora🔪"

Je vous laisse découvrir le sens de l'action : `${fruit.substring(0, fruit.length / 2)}\ud83d\udd2a`

Amélioration :

Nous pourrions à la place de valeur "2" (pour couper les fruits en deux), mettre une variable pour pouvoir couper les fruits en des quartiers de taille variable.

Code


lecture

foreach


Plus jamais de boucles for ! Génial



Voici les dupont/dupond


Nous voulons obtenir après filtrage et transformation le tableau des DUPONT.



Compléter les codes des fonctions forEach, trans, filter

   


const dupontd = [
    { name: "Dupont", sex: "m" },
    { name: "DUPONT", sex: "m" },
    { name: "duPont", sex: "f" },
    { name: "dupond", sex: "f" }
];

--------------------------------------- A compléter ----------------------------

function forEach(t, fx) {
   
}

function trans(t, fx) {
   
}

function filter(t, fx) {
   
}
----------------------------- les callbacks ------------------------------

function upperCase(pers) {
    pers.name = pers.name.toUpperCase();
}

function isDupont(pers) {
    return pers.name == "DUPONT"
}

function civilite({ name, sex }) {
    sex == 'm' ? name = `Monsieur ${name}` : name = `Madame ${name}`
    return { name }
}
----------------------------------- APPELS -------------------------------------

forEach(dupontd, upperCase);
const dupontFamily = filter(dupontd, isDupont)
const tid = trans(dupontFamily, civilite)