🥷DM: Closest value
🥷🥇 Fan club reduce
Voici un code donné à titre d'information 🥇.
🥷Objectif : Faire l'équivalent de l'aggregation dans les BD.
Vacances : achats
Découvrez les méthodes filter, map et reduce en action !
Préparation au DS
See the Pen Calendrier selection Periode by dupont (@dupontcodepen) on CodePen.
Structuration
Lecture
cours
Objectifs du cours
Avant | Après |
const pizzasWithCheese = []; for (let i = 0; i < pizzas.length; i++) { if (pizzas[i].ingredients.includes("🧀")) { pizzasWithCheese.push(pizzas[i]); } } console.log(pizzasWithCheese); const pizzaWithTomato = []; for (let i = 0; i < pizzas.length; i++) { if (pizzas[i].ingredients.includes("🍅")) { pizzaWithTomato.push(pizzas[i]); } } console.log(pizzaWithTomato); const pizzaWithCactus = []; for (let i = 0; i < pizzas.length; i++) { if (pizzas[i].ingredients.includes("🌵")) { pizzaWithCactus.push(pizzas[i]); } } console.log(pizzaWithCactus); | const hasIng = (ing) => (pizza) => pizza.ingredients.includes(ing); const chees = pizzas.filter(hasIng("🧀")), tomato = pizzas.filter(hasIng("🍅")), cactus = pizzas.filter(hasIng("🌵")); |
Code BD
🍕Préparation au DS !
...
🍕Base des données
const pizzas = [
{ name:"queen", ingredients: ["🐷","🍄","🍅","🧀"] },
{ name: "cheese", ingredients: ["🧀", "🍅"]},
{ name: "oriental", ingredients: ["🍅","🐑","🍄","🌶"]},
{ name: "royal", ingredients: ["🍅","🌵"]},
];
🪛 Questions
Trouvez les pizzas avec du 🧀
Trouvez les pizzas avec du 🍅
Trouvez les pizzas avec un ingrédient quelconque (soit du "🍅" ou du "🧀" ou du "🐑" ...)
Trouvez les pizzas avec au moins un ingrédient parmi une liste d'ingrédients
Trouvez les pizzas avec tous les ingrédients d'une liste
Trouvez les pizzas avec viande
Ajoutez pour chaque pizza le type (🐮ou ☘️)
Trouvez l'ensemble des ingrédients "🐷","🍄","🍅","🧀","🐑","🌶","🌵"
Trouvez pour chaque ingrédient le nombre de pizzas l'utilisant ,"🧀":2 …
Trouvez pour chaque ingrédient la liste des pizzas l'utilisant
Ajoutez le prix de chaque pizza
prices = new Map([ ["🍅", 1], ["🐷", 2], ["🌶",2], ["🍄", 5], ["🧀", 5], ["🐑", 2], ["🌵", 10]]);
🖋️Devoir sur table : 5 min
🪛Donner sous forme de dessin le résultat de :
😈Notez que ce code ne correspondrait en rien à une demande de normalisation du pays d'origine.
🪛Completer le code (lien) pour obtenir
DM : CB et map
😈Testez vous !
{ nom: "Dupont", ville: "evry", sex: "f", born: 1903 },
{ nom: "Dupont", ville: "Paris", sex: "f", born: 2004 },
{ nom: "Brusel", ville: "belfort", sex: "h", born: 1930 }
];
const filles_callBack = pers.filter(function(p){
return (p.sex === "f");
});
🪛Comparer ces différentes écritures :
- const filles_callBackArrow = pers.filter(p => p.sex === "f");
- const filles_callBackDest = pers.filter(function( {sex}){
});
- const filles_callBackArrowDestruc = pers.filter( ( {sex} ) => sex === "f" );
🪛Pour chaque transformation donner le résultat sous forme graphique :
Voici les fonctions de CallBack !
function ageVal({ born }) {return born}
function ajout(p) {p["new"] = "hallo";}
function ajout_2(p) {return p["new"] = "hallo";}
function ageObjDestruct({ born :annee }) {return { annee }};
return [p.nom,p.born]
});
🪛filles.map(ajout);
🪛filles.map(ajout_2);
🪛filles.map(p=>p);
🪛filles.map(p=>p["new"]="hallo");
🪛filles.map(ageObj);
🪛filles.map(ageVal);
🪛filles.map(function({ born : annee }) {return { annee }});
🪛filles.map(function({ born :annee, nom }) {return { nom,annee }});
🪛filles.map(function ({ nom, ville }) {
return {
info: `${nom} habite à ${ville}`
}
});
🆘 for of
Voici pour les étudiants en difficultés quelques remarque sur l'opérateur for of
Cas de la destructuration
TD : DOM
DOM : https://docs.google.com/document/d/1BBlwGeiae7l5-FDtUistGctSZEXrofi6e6EDvxAP3qs/edit?usp=sharing
See the Pen Event button data-containing by dupont (@dupontcodepen) on CodePen.
🪛DM
/**
Bravo !
Vous avez ecrit en TD, une fonction incroyable, vous pouvez être fier de vous
🥷Voici une bibliothèque qui implémente map https://lodash.com/docs#map
Le code de la fonction est un peu plus compliqué, mais le principe est là !
https://github.com/lodash/lodash/blob/3.10.1/lodash.src.js#L6864
🥇On peut découvrir que la fonction peut dans le cas d'un tableau appeler la fonction arrayMap. cette fonction ressemble à notre fonction.
: https://github.com/lodash/lodash/blob/3.10.1/lodash.src.js#L1531