for of


let tabPers = 
[  
  {
    nom: "Dupont",
    sex : "f"},
  { 
    nom: "Brusel",
    sex : "h"},
  {
    nom: "Dupont",
    sex : "f"},  
];

Cas des pointeurs


for (let pers of tabPers){
  console.log(pers);
}




Cas de la déstructuration 

for (let nom } of tabPers){
  console.log(nom);
}

A chaque itération, nous aurons : 

{
    let [ FORMAL_PARAMETERS ] = [ ACTUAL_PARAMETERS ];
    {
         CODE
    }
}

ainsi

{
    let [ { nom } ] = [ { nom: "Dupont",sex:"f" } ];
    {
        console.log( nom );
    }
}

sera équivalent à 

{
    let [ { nom:nom } ] = [ { nom: "Dupont",sex:"f" } ];
    {
        console.log( nom );
    }
}

et 
{
    let [ {  nom } ] = [ { nom: "Dupont",sex:"f" } ];
    {
        console.log( nom );
    }
}







Tu pointes ou tu tires ?

Que veux dire filtrer un tableau ?

La modification d'un élément filtré modifie-t-elle le tableau initial ?


Visualize : outil d'aide

Voici un lien pour comprendre le clonage d'objets avec :

Object.assign( objDestination, objSource)


Visualisation


Les pointeurs et moi !

Voici des articles montrant le clonage d'éléments d'un tableau.



this et la fonction flechée

function normalise(){
let normaliseT = this.valeurs.map(function(v){
return v / this.nb;
});
console.log(`valeurs normalisées ${normaliseT}`);
}


const obj = {valeurs:[3,6,12], nb:3};
normalise.call(obj);

Solution à ce problème classique :

function normalise(){
    let normaliseT = this.valeurs.map(function(v){
        return v / this.nb;
    }.bind(this));
    console.log(`valeurs normalisées ${normaliseT}`);
}

const obj = {valeurs:[3,6,12], nb:3};
normalise.call(obj);


Avec une fonction fléchée : 


function normalise(){
    let normaliseT = this.valeurs.map(v => v / this.nb);
    console.log(`valeurs normalisées ${normaliseT}`);
}

const obj = {valeurs:[3,6,12], nb:3};
normalise.call(obj);


En action

lire un object !

Notez les différences d'affichage :

let u = {t:2,u:3};
  console.log("u=" + u);
  console.log(u);

  • "u=[object Object]"
  • [object Object] {
      t
    : 2,
      u
    : 3
    }
const propKeys = Reflect.ownKeys(res);

for (const propKey of propKeys) {
console.log([propKey, res[propKey]]);
}