Pages

code

 const A = Pizzas.reduce((acc, {w}) => ( new Set([...acc,...w]) ),new Set);

const AA = new Set(Pizzas.reduce((acc, {w}) => ([...acc,...w]),[]));



const C = Pizzas.reduce((a, {w}) => {

  for (let ing of w){

   if (!a[ing]) a[ing] = 0;

   a[ing]+=1;

  }

  return a;

  },{});


for (let [ing, nb] of Object.entries(C)){

  console.log(`${ing} : ${nb}`);

}


/*************************************


const sum = (accumulator, currentValue) => accumulator + currentValue,

      max = (accumulator, currentValue) => Math.max(accumulator,currentValue),

      sortDist = (a, b) => (a.price > b.price ? -1 : 1);


function add( pizza ){

  let t = [];

  for (let inc of pizza.w){

      t.push(price.get(inc))

  }

  pizza.price = t.reduce(sum);

  return pizza

}


let g = Pizzas.map( add );

console.log(g)



solde

 lien vers code

Du récursif dans reduce !

 const t = [1, 2, [3, 4, [5, 6]]];

function one(arr) {
   return arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? one(val) : val), []);
};

u = one(t);
// [1, 2, 3, 4, 5, 6]

Examen

 const Pizzas = [

    { name:"queen", w: ["🐷","🍄","🍅","🧀"] },

    { name: "cheese", w: ["🧀", "🍅"]},

    { name: "oriental", w: ["🍅","🐑","🍄","🌶"]},

    { name: "royal", w: ["🍅","🌵"]},

  ],

  price = new Map([ ["🍅", 1], ["🐷", 2], ["🌶",2], ["🍄", 5], ["🧀", 5], ["🐑", 2], ["🌵", 10]]);


a) Donner l'ensemble des ingrédients

b) Donner pour chaque ingrédient le nombre de pizzas 


c) Ajouter le prix pour chaque pizza

[[object Object] {

  name: "queen",

  price: 13,

  w: ["🐷", "🍄", "🍅", "🧀"]

}, 

...

}]

d) trouver si une pizza a de la salade "🥗" 

trouver si une pizza a du "🌵"

e) Donner le code pour savoir si une pizza est végétarienne ("🐷", "🐑")

f) class Promo{

  constructor(pizzas, type = "dailyPizza") {

    this.type = type; this.pizzas = pizzas;}

  trans() {

    return this.pizzas.map(function (?) 

            ? name.toUpperCase() ?

   );

}}

let p = new Promo(Pizzas), dailyPizza =p.trans();

Compléter la classe pour obtenir : dailyPizza =

["<li> QUEEN type: dailyPizza </li>",... "<li> ROYAL ...

Passer à la version moderne de JavaScript

 

DM

 Soit la BD : 

const population = [

    { nom: "Dupont"ville: "evry"sex: "f"born: 1970 },
    { nom: "Dupont"ville: "Paris"sex: "f"born: 1980 },
    { nom: "Brusel"ville: "belfort"sex: "h"born: 1969 },
    { nom: "SuperDupont"ville: "Evry"sex: "f"born: 1971 },
    { nom: "Leroy"ville: "Paris"sex: "f"born: 1984 },
    { nom: "Tony"ville: "belfort"sex: "h"born: 2000 },

];

lien : BD

A partir du mardi 11 mai, tous les Français de plus de 18 ans peuvent prendre rendez-vous sur Doctolib pour se faire vacciner contre la Covid-19 en centre si des doses restent disponibles le lendemain. Prise de rendez-vous, vaccination après le Covid, planning... Guide et chiffres.

Nous voudrions connaitre sur notre populations qui peut être éligible à la vaccination en fonction de différents critères.


Trouver les personnes qui ont plus de cinquante ans, plus de quarante ans en fonction du genre ou du lieu d'habitation.

L'idée est de pouvoir écrire : 

people.filter(genre,femme)
           .filter(trancheAge,quarante);

people.filter(habitant,Évryens)
           .filter(trancheAge,cinquante)
           .filter(genre,homme);

Projet

const COMPAGNIES = [

    

        name: "HAL",

        ranges: [[7615, 7800], [65952, 65953], [119296, 200000]],

    },

    {

        name: "GOUGLE",

        ranges: [[7936, 7958], [7960, 7966], [65952, 65953], [119290, 200000]],

    },

    {

        name: "YOUTOUBE",

        ranges: [[65856, 66000], [65952, 65953], [119000, 200000]],

    },

    {

        name: "ECRY",

        ranges: [[125184, 126000], [125264, 127000], [125278, 126100]]

    },

    {

        name: "DUPONTco",

        ranges: [[66864, 66916], [66927, 66928]]

    }

]

 

Compagnie.ranges est un tableau donnant les salaires et leurs variations (le second chiffre tient compte des primes).

 

    Plus en détail, les propriétés de l'objet compagnie[1] sont :

name: "HAL", // nom de la compagnie

ranges: [[7615, 7800], [65952, 65953], [119296, 200000]], // trois salaires

[7615, 7800] // [salaireMin, Salaire avec prime]


Questions

  1. Ecrire une fonction donnant le nom d'une compagnie dont le salaire appartient à une catégorie.

Par exemple pour 120000 on peut avoir  

"HAL" car Hal posséde un salaire variant de 119296 à 200000


SOLUTION

Solution

 

  1. Ecrire une fonction qui donne l'ensemble des compagnies dont le montant appartient à une catégorie de salaires.

Par exemple pour le montant 120000 on peut avoir (en gras la catégorie qui valide la condition d'appartenance :

[{"name":"HAL","ranges":[[7615,7800],[65952,65953],[119296,200000]]},

{"name":"GOUGLE","ranges":[[7936,7958],[7960,7966],[65952,65953],[119290,200000]]},

{"name":"YOUTOUBE","ranges":[[65856,66000],[65952,65953],[119000,200000]]}]


Solution

 

  1. Ecrire une fonction donnant le nom des compagnies dont tous salaires encadre une valeur.

Par exemple pour 125278 seul ECRY a tous les salaires validant la condition

[{"name":"ECRY","ranges":[[125184,126000],[125264,127000],[125278,126100]]}]

 

  1. Donner les compagnies triées par écart de salaires (gap).

[{"name":"DUPONTco","gap":63},{"name":"ECRY","gap":94},{"name":"YOUTOUBE","gap":53144},{"name":"GOUGLE","gap":111354},{"name":"HAL","gap":111681}]

 

  1. Donner les compagnies triées par salaire moyen.

[{"name":"GOUGLE","average":50285},{"name":"HAL","average":64288},{"name":"DUPONTco","average":66896},{"name":"YOUTOUBE","average":83603},{"name":"ECRY","average":125242}]

 

Help

Pour les dernières questions, pensez à générer une structure contenant les infos utiles au travail des fonctions d'affichage.


Par exemple pour la compagnie "Dupont co"


On peut calculer les valeurs : min,max,gap=(max-min),... et les stocker dans une propriétés infos (par exemple).



Et ainsi de suite sur tous les éléments du tableau. L'idée est de faire l'ensemble de ces calculs en une seule passe.


Voici les valeurs pour "ECRY"

Cette structure sera stockée dans le tableau 

COMPAGNIES.infos = transforme();