Pages

Projet

Création d'un jeu. 

Règle du jeu : 

Le joueur a trois chances pour trouver un nombre secret !

 

Imaginez que vous soyez chef de projet, vous rédigez en urgence un prototype pour les membres de votre équipe.

Ce prototype permet à tous de fixer les idées (proto).

👷 Il faudra l'implémenter en JS.

Projet : git/gitHub

 Git and Co

https://sites.google.com/view/duponthtml/git?authuser=0

HELP GIT

https://docs.microsoft.com/fr-fr/learn/modules/introduction-to-github/2-what-is-github

Projet

vidéos : https://sites.google.com/view/duponthtml/dm?authuser=0





Cerise sur le gâteau !

 Que fait ce code

const groupBy = (arr, key) =>
  arr.reduce((acc, i) => {
    (acc[i[key]] = acc[i[key]] || [] ).push(i);
    return acc;
  }, {});

const data = [
    {
        nom: "coka",
        cat: "Boisson",
        prix: 4,
    },
    {
        nom: "pepsi",
        cat: "Boisson",
        prix: 9,
    },
    {
        nom: "farine",
        cat: "Epicerie",
        prix: 4,
    },
];


const cat = groupBy(data,"cat")

, prix = groupBy(data,"prix"); 


Min, max and co

Nous commençons par définir un immense tableau data de 50000 objets.
  1. const data = [];
  2. const random = (min, max) => Math.floor(Math.random() * (max - min)) + min;
  3. for (let i = 0; i < 50000; i++) {
  4.     data.push({ x: random(11000000) });
  5. }

Nous pouvons réduire le tableau à un objet contenant les valeurs 

  1. let {min, max, sum} = data.reduce(function( {max, min, sum}, {x}) {

  2.     min = Math.min(min,x);
  3.     max = Math.max(max,x);
  4.     sum = sum + x;
  5.     return { min, max, sum}
  6.  },
  7.  {min : Number.MAX_VALUE,
  8.  max : Number.MIN_VALUE,
  9.  sum : 0
  10.  });
  11. console.log( min, max, sum );


Autre

Nous utilisons ici la méthode map qui transforme le tableau d'objets en tableaux de valeurs

 
  1. const mapData = data.map(i => i.x);
  2. const maxData = Math.max(...mapData);
  3. const minData = Math.min(...mapData);


Reduce en 6 actes !


reduce 1
reduce 2
reduce 3
reduce 4
reduce 5

Améliorations


const words = [10,2,2,1,10,10,10,10,10];

const o = words.reduce((a, x) => {
   if (!a[x]) a[x] = 0;
   a[x]=a[x]+1;
return a},{});




Générer un tab de valeurs

  1. const data = [],
  2.       nbV = 5;
  3. const random = (min, max) => Math.floor(Math.random() * (max - min)) + min;
  4. for (let i = 0; i < nbV; i++) {
  5.     data.push({ x: random(1, 1000000) });





Et connaissez vous  Array.from !
Array.from permet d'initialiser un tableau.

 const T = Array.from(new Array(5), (x,i) => i);
console.log(T);

// il suffit d'avoir un itérateur :
 const tab = Array.from({length : 5}, (x,i) => 2*i);
console.log(tab);

code

les dessous de js

 

Episode 1 : __proto__

Episode 2 : Object.create

Episode 3 : prototype

Episode 4 : new

 

 

 

TEST

  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 ("🐷", "🐑")