À propos de ce cours
Parcourir un objet : for…in, Object.keys, Object.values et Object.entries. Dans cette leçon du cours JavaScript, vous apprendrez à : parcourir les propriétés d'un objet avec for…in ; obtenir ses clés, ses valeurs ou ses paires avec Object.keys, values et entries ; utiliser les méthodes des tableaux sur un objet ; transformer un objet avec Object.fromEntries.
Chapitre 9 — Les objets littéraux, JSON et les collections · Parcourir un objet : for…in, Object.keys, Object.values et Object.entries
🎯 Objectifs de la leçon
• parcourir les propriétés d'un objet avec
• obtenir ses clés, ses valeurs ou ses paires avec
• utiliser les méthodes des tableaux sur un objet ;
• transformer un objet avec
• parcourir les propriétés d'un objet avec
for…in; • obtenir ses clés, ses valeurs ou ses paires avec
Object.keys, values et entries; • utiliser les méthodes des tableaux sur un objet ;
• transformer un objet avec
Object.fromEntries. 1. Trois tableaux à partir d'un objet

Figure 1 — Les trois méthodes renvoient des tableaux, que l'on peut parcourir et transformer.
const produit = { nom: "Clavier", prix: 249, stock: 12, categorie: "Informatique" };
// 1. for...in : parcourt les clés
for (const cle in produit) {
console.log(`for...in → ${cle} = ${produit[cle]}`);
}
// 2. Object.keys, Object.values, Object.entries : des tableaux
console.log("keys :", Object.keys(produit));
console.log("values :", Object.values(produit));
console.log("entries :", Object.entries(produit));
// 3. for...of sur entries avec déstructuration
for (const [cle, valeur] of Object.entries(produit)) {
console.log(`${cle.padEnd(10)} ${valeur}`);
}
// 4. Profiter des méthodes des tableaux
const panier = { clavier: 249, souris: 89, ecran: 1490, tapis: 35 };
const total = Object.values(panier).reduce((s, p) => s + p, 0);
const chers = Object.entries(panier).filter(([, prix]) => prix > 100).map(([article]) => article);
console.log("Total :", total, "DH | Articles > 100 DH :", chers.join(", "));
// 5. Transformer un objet : entries → map → fromEntries
const panierTTC = Object.fromEntries(Object.entries(panier).map(([a, p]) => [a, Math.round(p * 1.2)]));
console.log("TTC :", panierTTC);
// 6. Trier les entrées d'un objet
const classement = Object.entries(panier).sort(([, a], [, b]) => b - a);
console.log("Du plus cher au moins cher :", classement.map(([a, p]) => `${a} (${p})`).join(" > "));
// 7. for...in voit aussi les propriétés héritées ; Object.keys seulement les propres
const base = { couleur: "noir" };
const modele = Object.create(base);
modele.taille = "M";
const vuesParForIn = [];
for (const c in modele) vuesParForIn.push(c);
console.log("for...in :", vuesParForIn, "| Object.keys :", Object.keys(modele));
Résultat dans la console
for...in → nom = Clavier
for...in → prix = 249
for...in → stock = 12
for...in → categorie = Informatique
keys : [ 'nom', 'prix', 'stock', 'categorie' ]
values : [ 'Clavier', 249, 12, 'Informatique' ]
entries : [
[ 'nom', 'Clavier' ],
[ 'prix', 249 ],
[ 'stock', 12 ],
[ 'categorie', 'Informatique' ]
]
nom Clavier
prix 249
stock 12
categorie Informatique
Total : 1863 DH | Articles > 100 DH : clavier, ecran
TTC : { clavier: 299, souris: 107, ecran: 1788, tapis: 42 }
Du plus cher au moins cher : ecran (1490) > clavier (249) > souris (89) > tapis (35)
for...in : [ 'taille', 'couleur' ] | Object.keys : [ 'taille' ]
2. Quelle méthode choisir ?
for (const cle in objet): la boucle historique, qui donne les clés une à une. Elle parcourt aussi les propriétés héritées (dernier exemple), ce qui peut surprendre.Object.keys(o),Object.values(o),Object.entries(o): seulement les propriétés propres de l'objet, sous forme de tableau. On peut alors utiliserfor…of,map,filter,reduce,sort… C'est la méthode recommandée.for (const [cle, valeur] of Object.entries(o)): la déstructuration donne la clé et la valeur dans deux variables (leçon 9.4).Object.fromEntries(paires)fait l'inverse deentries: on transforme les paires, puis on reconstruit un objet.
N'utilisez pas for…in sur un tableau : préférez for…of (leçon 8.3).
ℹ️ À retenir
•
•
•
•
•
Object.keys, values, entries: des tableaux des propriétés propres.•
for (const [k, v] of Object.entries(o)) pour parcourir clé et valeur.•
for…in voit aussi les propriétés héritées ; jamais sur un tableau.•
Object.fromEntries(Object.entries(o).map(…)) pour transformer un objet.🛠 Activité 3 — Le panier d'achats
Mission : Un panier est représenté par un objet { article: quantite, … } et un catalogue par un objet { article: prixUnitaire, … }.
Questions pour avancer (répondez dans votre compte rendu, puis appliquez dans votre projet) :
- Affichez chaque ligne du panier sous la forme « 2 × clavier ». Quelle méthode utilisez-vous, et comment obtenez-vous la clé et la valeur ensemble ?
- Calculez le nombre total d'articles avec
Object.valuesetreduce. - Calculez le montant total en croisant le panier et le catalogue. Que se passe-t-il si un article du panier n'est pas au catalogue ? Comment le signaler ?
- Créez un nouveau panier où chaque quantité est doublée, sans modifier l'original, avec
entries,mapetfromEntries. - Retirez du panier les articles dont la quantité vaut 0, en une seule chaîne de méthodes.
- Triez les lignes du panier de la plus chère à la moins chère (prix × quantité) et affichez le classement.
Je vérifie / je rends :
- ☐ Le script et l'affichage du panier dans la console.
← Le tableau associatif en JavaScriptLa déstructuration et l'opérateur spread sur les objets →