Avatar ·

Comment parcourir toutes les propriétés d'un objet en JavaScript ? Itération sur les clés et valeurs

Bonjour à tous ! Je viens de commencer à apprendre JavaScript et j'ai rencontré un problème. J'ai un objet avec des données sur les utilisateurs :\n\n```javascript\nconst users = {\n user1: { name: 'Anna', age: 25 },\n user2: { name: 'Ivan', age: 30 },\n user3: { name: 'Maria', age: 28 }\n};\n```\n\nJe dois afficher dans la console le nom et l'âge de chaque utilisateur. J'ai essayé d'utiliser une boucle `for` classique, mais elle ne fonctionne pas avec les objets — elle renvoie `undefined`. J'ai cherché sur Google, j'ai trouvé quelque chose sur `for...in`, mais je n'ai pas compris comment l'utiliser correctement. J'ai aussi vu des mentions des méthodes `Object.keys()`, `Object.values()` et `Object.entries()`, mais je suis confus sur la différence entre elles et laquelle est la meilleure.\n\nPouvez-vous me dire comment parcourir correctement toutes les propriétés d'un objet ? De préférence avec des exemples de code pour que ce soit clair pour un débutant. Merci d'avance !\n<<>>\n

Comment parcourir les propriétés d'un objet : guide complet

\n\n

Salut ! Tu as rencontré un problème classique. En JavaScript, les objets ne sont pas des tableaux, donc une boucle `for` ordinaire ne fonctionne pas avec eux — elle renvoie `undefined`. Pour parcourir les propriétés d'un objet, tu peux utiliser :

\n\n
    \n
  • for...in : parcourt les clés (propriétés) d'un objet.
  • \n
  • Object.keys() : retourne un tableau des clés.
  • \n
  • Object.values() : retourne un tableau des valeurs.
  • \n
  • Object.entries() : retourne un tableau de paires [clé, valeur].
  • \n
\n\n

Voici des exemples pour ton objet `users` :

\n\n
// Avec for...in\nfor (let key in users) {\n  console.log(users[key].name, users[key].age);\n}\n\n// Avec Object.keys()\nObject.keys(users).forEach(key => {\n  console.log(users[key].name, users[key].age);\n});\n\n// Avec Object.values()\nObject.values(users).forEach(user => {\n  console.log(user.name, user.age);\n});\n\n// Avec Object.entries()\nObject.entries(users).forEach(([key, user]) => {\n  console.log(user.name, user.age);\n});\n
\n\n

Toutes ces méthodes fonctionnent, mais `Object.values()` est souvent le plus simple si tu n'as besoin que des valeurs. Pour les débutants, `for...in` est aussi une bonne option, mais attention : il parcourt aussi les propriétés héritées (utilise `hasOwnProperty` pour les filtrer si nécessaire).