Latenode

Comment itérer sur un objet JavaScript ?

Comment itérer sur un objet JavaScript à l’aide de différentes méthodes ?

6 min de lecture
Code JavaScript illustrant l’itération sur les propriétés d’un objet

Parcourir les objets est une tâche fondamentale en programmation JavaScript. Contrairement aux tableaux, les objets JavaScript ne sont pas itérables par défaut, ce qui signifie que vous ne pouvez pas utiliser directement des méthodes telles que forEach(), map() ou la boucle for...of sur un objet. Il existe toutefois plusieurs façons de parcourir les propriétés d'un objet et d'accéder à la fois aux clés et aux valeurs. Dans cet article, nous allons explorer différentes méthodes pour itérer efficacement sur un objet JavaScript, avec leur syntaxe, des exemples et leurs cas d'utilisation.

Points clés : Les objets JavaScript ne sont pas intrinsèquement itérables, mais plusieurs méthodes permettent de parcourir leurs propriétés. La boucle for...in est traditionnelle, mais requiert une vérification hasOwnProperty(), tandis que des méthodes plus récentes comme Object.entries() avec map()/forEach(), Object.keys() avec forEach() et Object.values() offrent des approches plus directes. La méthode _.forOwn() de Lodash propose une syntaxe pratique pour les utilisateurs de cette bibliothèque. Le choix de la méthode d'itération dépend des exigences de compatibilité avec les navigateurs, de la lisibilité du code et des cas d'utilisation spécifiques. Bien que les performances puissent légèrement varier selon les méthodes, les différences sont généralement négligeables pour la plupart des applications, et les développeurs doivent privilégier la clarté et la maintenabilité du code.

Écrivez du code même si vous débutez avec l'assistant IA de Latenode

Commencer gratuitement

Méthode 1 : utiliser la boucle for...in

La boucle for...in est une méthode traditionnelle pour itérer sur les propriétés d'un objet. Elle vous permet d'accéder à la fois aux clés et aux valeurs d'un objet. Voici son fonctionnement :

Syntaxe :


for (let key in object) {
  if (object.hasOwnProperty(key)) {
    // Perform operations with key and object[key]
  }
}

Exemple :


const person = {
  name: 'John',
  age: 30,
  city: 'New York'
};

for (let key in person) {
  if (person.hasOwnProperty(key)) {
    console.log(key + ': ' + person[key]);
  }
}
Output:
name: John
age: 30
city: New York

Il est important d'utiliser la méthode hasOwnProperty() dans la boucle afin de vérifier si la clé appartient à l'objet lui-même et non à sa chaîne de prototypes. Cela garantit que vous itérez uniquement sur les propriétés propres de l'objet et évitez les propriétés héritées.

La boucle JavaScript for...in pour parcourir un objet est une manière simple d'itérer sur les propriétés d'un objet. Elle présente toutefois quelques limites :

  • Elle itère sur toutes les propriétés énumérables d'un objet, y compris celles héritées de la chaîne de prototypes. C'est pourquoi il est nécessaire d'utiliser hasOwnProperty() pour filtrer les propriétés héritées.
  • L'ordre d'itération n'est pas garanti. Les propriétés peuvent ne pas être accessibles dans le même ordre que celui dans lequel elles ont été définies.

Malgré ces limites, la boucle for...in reste une méthode couramment utilisée pour l'itération sur les objets grâce à sa simplicité et à sa large prise en charge par les navigateurs.

Méthode 2 : utiliser la méthode Object.entries() et la méthode map()

La méthode Object.entries() est un ajout plus récent à JavaScript (introduit avec ECMAScript 2017) qui renvoie un tableau de paires [clé, valeur] correspondant aux propriétés propres énumérables à clé chaîne d'un objet donné. Nous pouvons ensuite utiliser la méthode map() pour itérer sur le tableau et accéder aux clés et aux valeurs.

Syntaxe :


const person = {
  name: 'John',
  age: 30,
  city: 'New York'
};

for (let key in person) {
  if (person.hasOwnProperty(key)) {
    console.log(key + ': ' + person[key]);
  }
}
Output:
name: John
age: 30
city: New York

Exemple :


const person = {
  name: 'John',
  age: 30,
  city: 'New York'
};

for (let key in person) {
  if (person.hasOwnProperty(key)) {
    console.log(key + ': ' + person[key]);
  }
}
Output:
name: John
age: 30
city: New York

La méthode Object.entries() offre un moyen pratique d'obtenir un tableau de paires clé-valeur à partir d'un objet. En la combinant avec la méthode map(), vous pouvez facilement itérer sur le tableau et effectuer des opérations sur chaque paire clé-valeur.

L'un des avantages de Object.entries() est qu'elle renvoie uniquement les propriétés propres énumérables de l'objet, en excluant les propriétés héritées de la chaîne de prototypes. Cela élimine la nécessité d'une vérification hasOwnProperty() supplémentaire.

Gardez toutefois à l'esprit que Object.entries() n'est pas pris en charge par les anciens navigateurs, tels qu'Internet Explorer. Si la compatibilité avec les navigateurs est importante, vous devrez peut-être utiliser un polyfill ou une méthode alternative.

Pour en savoir plus sur Object.entries(), consultez la documentation MDN.

Méthode 3 : utiliser la méthode forEach() et la méthode Object.keys()

La méthode Object.keys() renvoie un tableau contenant les noms des propriétés propres énumérables (clés) d'un objet donné. Nous pouvons utiliser la méthode forEach() pour itérer sur le tableau de clés et accéder aux valeurs correspondantes à l'aide de ces clés.

Syntaxe :


Object.keys(object).forEach(key => {
  // Perform operations with key and object[key]
});

Exemple :


const person = {
  name: 'John',
  age: 30,
  city: 'New York'
};

Object.keys(person).forEach(key => {
  console.log(key + ': ' + person[key]);
});
Output:
name: John
age: 30
city: New York

L'utilisation de Object.keys() avec forEach() permet d'itérer sur les clés d'un objet et d'accéder aux valeurs correspondantes. Cette méthode est utile lorsque vous avez uniquement besoin des clés d'un objet et souhaitez effectuer des opérations à partir de celles-ci.

Comme Object.entries(), Object.keys() ne renvoie que les propriétés propres énumérables de l'objet ; vous n'avez donc pas besoin d'utiliser hasOwnProperty() pour filtrer les propriétés héritées.

Pour en savoir plus sur Object.keys(), consultez la documentation MDN.

Méthode 4 : utiliser la méthode Lodash _.forOwn()

Lodash est une bibliothèque utilitaire populaire qui fournit un ensemble de fonctions utiles pour travailler avec des objets et des tableaux. Si vous utilisez déjà Lodash dans votre projet, vous pouvez tirer parti de sa méthode _.forOwn() pour itérer sur les propriétés propres d'un objet.

Syntaxe :


_.forOwn(object, (value, key) => {
  // Perform operations with key and value
});

Exemple :


const _ = require('lodash');

const person = {
  name: 'John',
  age: 30,
  city: 'New York'
};

_.forOwn(person, (value, key) => {
  console.log(key + ': ' + value);
});
Output:
name: John
age: 30
city: New York

La méthode _.forOwn() itère sur les propriétés propres énumérables d'un objet et transmet la valeur et la clé à la fonction de rappel. C'est une alternative pratique à la boucle for...in pour parcourir les entrées d'un objet lorsque vous utilisez déjà Lodash dans votre projet.

Notez que l'utilisation de Lodash nécessite d'installer la bibliothèque et de l'importer dans votre projet. Si vous n'utilisez pas Lodash à d'autres fins, il n'est peut-être pas nécessaire de l'ajouter uniquement pour l'itération sur les objets.

Pour en savoir plus sur Lodash et ses méthodes d'itération sur les objets JavaScript, consultez la documentation Lodash.

Méthode 5 : utiliser la méthode Object.values() et la méthode forEach()

La méthode Object.values() renvoie un tableau des valeurs des propriétés propres énumérables d'un objet donné. Nous pouvons utiliser la méthode forEach() pour itérer sur le tableau de valeurs. Si vous avez également besoin des clés correspondantes, vous pouvez utiliser la méthode Object.keys() conjointement.

Syntaxe :


Object.values(object).forEach((value, index) => {
  const key = Object.keys(object)[index];
  // Perform operations with key and value
});

Exemple :


const person = {
  name: 'John',
  age: 30,
  city: 'New York'
};

Object.values(person).forEach((value, index) => {
  const key = Object.keys(person)[index];
  console.log(key + ': ' + value);
});
Output:
name: John
age: 30
city: New York

L'utilisation de Object.values() vous permet d'itérer directement sur les valeurs d'un objet. Si vous avez également besoin des clés correspondantes, vous pouvez les obtenir avec Object.keys() et accéder à la clé située au même index que la valeur.

Cette méthode est utile lorsque vous devez principalement travailler avec les valeurs d'un objet et accéder aux clés uniquement lorsque nécessaire.

Pour en savoir plus sur Object.values(), consultez la documentation MDN.

Pour conclure

Dans cet article, nous avons exploré différentes méthodes pour itérer sur un objet JavaScript. Chaque méthode présente ses propres avantages et cas d'utilisation :

  • La boucle for...in est une méthode traditionnelle pour itérer sur un objet JavaScript. Elle est simple et largement prise en charge, mais nécessite une vérification hasOwnProperty() supplémentaire pour éviter d'itérer sur les propriétés héritées.
  • La méthode Object.entries(), combinée à map() ou forEach(), offre une façon concise d'accéder aux clés et aux valeurs d'un objet. Elle élimine le besoin de hasOwnProperty(), mais peut ne pas être prise en charge par les anciens navigateurs.
  • La méthode Object.keys(), associée à forEach(), permet d'itérer sur les clés d'un objet et d'accéder aux valeurs correspondantes. Elle est utile lorsque vous devez principalement travailler avec les clés.
  • La méthode Lodash _.forOwn() est une option pratique si vous utilisez déjà Lodash dans votre projet. Elle offre une syntaxe claire pour itérer sur les propriétés propres d'un objet.
  • La méthode Object.values(), associée à forEach(), se concentre sur l'itération des valeurs d'un objet. Vous pouvez l'utiliser conjointement avec Object.keys() si vous avez également besoin des clés.

Lorsque vous choisissez une méthode pour itérer sur un objet JavaScript, tenez compte de facteurs tels que la compatibilité avec les navigateurs, la lisibilité du code et les exigences spécifiques de votre cas d'utilisation. Quelle que soit la méthode choisie, savoir itérer efficacement sur les objets est essentiel pour programmer efficacement en JavaScript.

Écrivez du code même si vous débutez avec l'assistant IA de Latenode

Commencer gratuitement

FAQ

Frequently Asked Questions

La boucle for...in itère sur toutes les propriétés énumérables d’un objet, y compris celles héritées de la chaîne de prototypes. Elle nécessite une vérification supplémentaire avec hasOwnProperty() afin d’éviter d’itérer sur les propriétés héritées. À l’inverse, Object.entries() renvoie un tableau de paires [clé, valeur] correspondant aux propriétés énumérables propres d’un objet dont les clés sont des chaînes de caractères. Ce tableau peut ensuite être facilement parcouru avec des méthodes telles que map() ou forEach(). Object.entries() inclut uniquement les propriétés propres de l’objet, à l’exclusion des propriétés héritées.

Cela vous a aidé ? Partagez-le →

Écrit par

Vasiliy Datsenko

Responsable du support client

Vasiliy Datsenko est responsable du support client chez Latenode et un rédacteur en automatisation axé sur les produits. Son travail relie les conversations clients, la recherche sur l'automatisation des flux de travail, les cas d'utilisation de l'IA et la formation pratique sur les produits pour les équipes cherchant à automatiser des processus métier réels.

Profil de l'auteur →

Vérifié par

Oleg Zankov

PDG de Latenode, expert en no-code

Avec une philosophie ancrée dans l'innovation, la résolution de problèmes et l'expérience utilisateur, je me consacre à donner aux équipes les moyens de créer des intégrations sur mesure et d'automatiser les workflows avec facilité et efficacité. Fort d'une riche expérience en développement commercial, entrepreneurship technologique et développement logiciel, j'ai reconnu le besoin d'une solution d'intégration plus accessible, évolutive et adaptable. Ainsi est né Latenode.com. Grâce à notre plateforme, les entreprises peuvent exploiter la puissance de la technologie sans nécessiter de compétences approfondies en codage. Passionné par la création d'un avenir où la technologie nous sert, et non l'inverse, ma mission est de simplifier les processus complexes. Je crois en la démocratisation de la technologie et en dotant les équipes des outils nécessaires pour innover, croître et réussir dans un monde de plus en plus numérique.

Profil de l'auteur →

Continuer la lecture