Pages

QCM maison

Ecrire sa bibliothèque de fonctions sur les tableaux !

Testez vous

const pers = [
    { 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}){
    return (sex === "f");
});

const filles_callBackArrowDestruc = pers.filter( ( {sex} ) => sex === "f" );

Pour chaque transformation donner le résultat sous forme graphique :

exemple

const filles= pers.filter(function(p){
    return (p.sex === "f");
});

const dates = filles.map(function annee( p, index ) {
   return { 
        num : index,
        annee : p.born 
     };
});



en Action

    function ageObj({ born }) {return { born }}
    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 }};

filles.map(function annee( p, index ) {
   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}`
    }
});

https://goo.gl/G6u1Cz

td

const pers =  [
{nom: "Dupont",ville: "evry",sex: "f",born:1903},
{nom: "Dupont",ville: "Paris",sex: "f",born:2004},
{nom: "Brusel",ville: "belfort",sex: "h",born:1930}
];

Ecrire un code pour afficher :



td

let pers =  [
{nom: "Dupont",ville: "evry",sex: "f"},
{nom: "Brusel",ville: "belfort",sex: "h"}
];

console.log(pers);

for ( let v of pers){
  if ( v.sex == "h" )
    console.log(`Monsieur ${v.nom}`);
  else
    console.log(`Madame ${v.nom}`);
}

for ( let v of pers){
  if ( v.sex == "h" )
    console.log(`Cher ${v.nom}`);
  else
    console.log(`Chere ${v.nom}`);
}

for ( let v of pers){
    console.log(`${v.nom} habite à ${v.ville}`);
}

function affiche_0(tab, callback) {
    for (let ele of tab){
         console.log(callback(ele))
    }
}

function civilite_0(pers){
  return (pers.sex =='h' ? `Monsieur ${pers.nom}` : `Madame ${pers.nom}`);
}

affiche_0(pers,civilite_0);

function civilite({nom,sex}) {
   return (sex=='h' ? `Monsieur ${nom}` : `Madame ${nom}`);
}

function affiche(tab, callback) {

for (let ele of tab){
console.log(callback ? callback(ele) : `${ele.nom} habite à ${ele.ville}`);


};

affiche(pers,civilite);

proxy : en action



proxy : en action

 Exemple


getter setter

code en action

let personnes = {

  groupBy(objectArray, property) {
       return objectArray.reduce(function (acc, obj) {
          let key = obj[property];
          if (!acc[key]) {
            acc[key] = [];
          }
          acc[key].push(obj);
          return acc;
  }, {})
  },

  list:  [
    {
      nom: "Dupont",
      ville: "evry",
      sex: "f"
    },
    {
      nom: "Brusel",
      ville: "belfort",
      sex: "h"
    },
    {
      nom: "Dupont",
      ville: "paris",
      sex: "f"
    },
    {
    nom: "Durant",
    ville : "paris",
    sex : "h"}
  ],

  get latest() {
    if (this.list.length == 0) {
      return undefined;
    }
    return this.list[this.list.length - 1];
  },
   get length() {
    return this.list.length;
  },
  get groupeParVilles() {
    return this.groupBy(this.list, "ville");
  },
  get groupeParNom() {
    return this.groupBy(this.list, "nom");
  },
  get groupeParSex() {
    return this.groupBy(this.list, "sex");
  },
  get villes(){
     let groupeVilles = this.groupBy(this.list, "ville");     
      return Object.keys(groupeVilles);   
  },
  get noms(){
     let groupeNoms = this.groupBy(this.list, "nom");     
      return Object.keys(groupeNoms );   
  },
  get sex(){
     let groupeSex = this.groupBy(this.list, "sex");     
      return Object.keys(groupeSex);   
  },
   
}

 console.log(personnes.villes);
// console.log(personnes.noms);
// console.log(personnes.sex);
 console.log(personnes.groupeParVilles);
//console.log(personnes.latest);
//console.log(personnes.length);

en action

pers = [
{
nom: "Dupont",
ville: "evry",
sex: "f"
},
{
nom: "Brusel",
ville: "belfort",
sex: "h"
},
{
nom: "Dupont",
ville: "paris",
sex: "f"
},
{
nom: "Durant",
ville : "paris",
sex : "h"}
];

//for of

function Affiche(tab, callback) {
let i=0;
for (let ele of tab){
console.log(callback ? callback(ele,i) : `${i}->${ele.nom}`);
i++;
}
};

function afficheVille({ville},i) {
return `${i} : ${ville}`
};

Affiche(pers,afficheVille);


// transforme
function civilite({nom,sex}) {
return (sex=='h' ? `Monsieur ${nom}` : `Madame ${nom}`);
}

function politesse({nom,sex}) {
return (sex=='h' ? `Cher ${nom}` : `Chere ${nom}`);
}
function transf(array, fx) {
let passed = [];
for(let v of array)
passed.push(fx(v));
return passed;
}

console.log(transf(pers,civilite));
console.log(transf(pers,politesse));


//map

function toStringMap(tab,callback) {
let t = tab.map((ele,i) => callback ? callback(ele,i) : `${i} -> ${ele.nom}`);
//console.log(t);
return t.toString();
}
//console.log(toStringMap(pers));
//console.log(toStringMap(pers,afficheVille));