Pages

Retour sur la destructuration

Rappels destructuration sur les objets

const obj = { name:"dupont" }
const copyAdr = obj;

const copyVal = {...obj};

copyAdr.name = "cool"
console.log(obj,copyAdr,copyVal)

Equivalent pythontutor (l'opérateur ... est remplacé par Object.Assign)



Rappels destructuration sur les tableaux

const t= [1,2];
const copyAdr = t;
const copyVal = [...t];
copyAdr[0] = "cool"
copyVal.push = "new";
console.log(t,copyAdr,copyVal)

Equivalent pythontutor

const basket = [

  { name: "orange", price: 1, category: "fruit", quantity: 2 },
  { name: "poireau", price: 1, category: "vegetable", quantity: 3, origin: "USA"},
  { name: "ananas", price: 1, category: "fruit", quantity: 1, origin: "USA" },
  { name: "Pamplemousse", price: 12, category: "fruit", quantity: 4 },
  { name: "Carotte", price: 1, category: "vegetable", quantity: 5 }

]; 

Filtrer les articles par catégorie : Par exemple, sélectionner tous les fruits :

⛔Code avec for-i à ne plus utiliser
let fruits = [];
for (let i = 0; i < basket.length; i++) {
  if (basket[i].category === "fruit") {
    fruits.push(basket[i]);
  }
}
console.log(fruits);

🚫Code avec destructuration donné par GPT : à ne pas utiliser pour l'instant
let fruits = [];

for (const { category, ...rest } of basket) {
  if (category === "fruit") {
    fruits.push({ category, ...rest }); // Ajoute l'objet correspondant à la catégorie "fruit"
  }
}

✅ Il est préférable d'écrire le code suivant sans destructuration
let fruits = [];

for (const item of basket) {
  if (item.category === "fruit") {
    fruits.push({ ...item }); // Ajoute l'objet correspondant à la catégorie "fruit"
  }
}


🆘 faire un dessin du résultat ! 
Code équivalent dans pythontutor : code

👍code




Comparez le code précédent qui copie les fruits dans une nouvelle structure avec une recopie de l'adresse ! 

let fruits = [];

for (const item of basket) {
  if (item.category === "fruit") {
    fruits.push(item); // Ajoute l'objet correspondant à la catégorie "fruit"
  }
}


👍code


Résumé

for (const item of basket) {

  if (item.category === "fruit") {

    fruits.push( item );

  }

}

for (const item of basket) {

  if (item.category === "fruit") {

    fruits.push( {... item} );

  }

}