Set Map and co

Comment répondre à la question : 

💫 Dans quel(s) pays on voyage le plus ? 


const amis = [

  { nom: "Bob", pays: ["Belgique", "France"]},

  { nom: "You", pays: ["Allemagne", "Pérou", "France"]}

]


// pour rappel

const pays1 = amis.reduce((acc, curr) => ([...acc,...curr.pays]),[]);

const pays2 = amis.reduce((acc, {pays}) => ([...acc,...pays]),[]);

// Ensemble des pays visités

const Union = amis.reduce((acc, {pays}) => ( new Set([...acc,...pays]) ),new Set);


const max = amis.reduce((a, {pays}) => {

  for (let p of pays){

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

   a[p]+=1

  }

  return a;

  },{});

let tmp = {nb:0, pays:""}
for (const [pays,nb] of Object.entries(frequention)) {
    if (tmp.nb<nb) {
        tmp = {pays, nb}
    }
}

console.log(tmp)



SET !

  1. const set1 = new Set([2,1,3]);
  2. const set2 = new Set([4,5,6,3]);

  3. let union = [...[...set1],...[...set2]];

  4. let t = new Set(union.sort( (a,b) => a-b));
trie un set ! 


début de MVC

 Le contrôleur

  1. class Controleur { constructor(view) { this.view = view; this.name = "control" this.bind(); } bind() { console.log(this.name); this.view.bindAdd(()=>this.handlerAdd()); } handlerAdd() { let data = new Date(); this.view.handlerAdd(data); } }
  2. c = new Controleur(new View());

 La view

  1. class View { constructor() { this.name = "view" this.bAdd = document.querySelector(".add"); this.l = document.querySelector("ol"); } handlerAdd(data) { console.dir(this.name); this.l.insertAdjacentHTML("afterbegin", `<li> ${data}</li>`); } bindAdd(handler) { this.bAdd.addEventListener("click", () => { console.log(this.name); handler(); }) } }

 HTML

<body>
    <button class="add" name="buttonAdd" type="submit"> + </button>
    <ol></ol>
    <script src="view.js"></script>
    <script src="controleur.js"></script>
</body>

filter : thisarg

 

  1. function majeur( {born, sex} ) {

  2.   return (born < this.born  && sex == this.sex) }


  3. let f = {

  4.   sex : "f",

  5.   born : 2002,

  6. }


  7. let h = {

  8.   sex : "h",

  9.   born : 2000,

  10. }


  11. let hommesMajeur = tabPers.filter(majeur,h),

  12.      femmesMajeur = tabPers.filter(majeur,f);




code