Programmation
Radzivon Alkhovik
Adepte de l'automatisation en code bas
4 juillet 2024
Une plateforme low-code mêlant la simplicité du no-code à la puissance du full-code 🚀
Commence gratuitement
4 juillet 2024
-
7
min lire

Comment itérer sur un objet JavaScript ?

Radzivon Alkhovik
Adepte de l'automatisation en code bas
Table des matières

Itérer sur des objets est une tâche fondamentale dans la programmation JavaScript. Contrairement aux tableaux, les objets en JavaScript ne sont pas itérables par défaut, ce qui signifie que tu ne peux pas utiliser des méthodes comme forEach(), map(), ou for...of loop directement sur un objet. Cependant, il existe plusieurs façons de boucler sur 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, ainsi que leur syntaxe, des exemples et des cas d'utilisation.

Principaux enseignements : Les objets JavaScript ne sont pas intrinsèquement itérables, mais il existe plusieurs méthodes pour parcourir en boucle leurs propriétés. La boucle for...in est traditionnelle mais nécessite 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 rationalisées. La méthode _.forOwn() de Lodash fournit une syntaxe pratique pour ceux qui utilisent déjà la 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 varier légèrement d'une méthode à l'autre, les différences sont généralement négligeables pour la plupart des applications, et les développeurs doivent donner la priorité à la clarté et à la maintenabilité du code

Ecris du code même si tu es débutant avec Latenode's AI Assistent

Méthode 1 : Utilisation de la boucle for...in

La boucle for...in est un moyen traditionnel d'itérer sur les propriétés d'un objet. Elle te permet d'accéder à la fois aux clés et aux valeurs d'un objet. Voici comment elle fonctionne :

Syntaxe :


for (let key in object) {
  if (object.hasOwnProperty(key)) {
    // Effectue des opérations avec la clé et l'objet[clé].
  }
}

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() à l'intérieur de la boucle pour vérifier si la clé appartient à l'objet lui-même et non à sa chaîne de prototypes. Cela permet de s'assurer que tu n'itères que sur les propriétés propres de l'objet et que tu évites les propriétés héritées.

La boucle for...in javascript est un moyen simple d'itérer sur les propriétés d'un objet. Cependant, elle présente 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. Il se peut que l'on n'accède pas aux propriétés 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 d'objets en raison de sa simplicité et de sa large prise en charge par les navigateurs.

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

La méthode Object.entries() est un ajout plus récent à JavaScript (introduit dans ECMAScript 2017) qui renvoie un tableau des paires de propriétés [clé, valeur] à chaîne énumérable propres à 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() est un moyen pratique d'obtenir un tableau de paires clé-valeur à partir d'un objet. En la combinant avec la méthode map(), tu peux facilement itérer sur le tableau et effectuer des opérations sur chaque paire clé-valeur.

L'un des avantages de l'utilisation de Object.entries() est qu'il ne renvoie que les propriétés énumérables de l'objet, à l'exclusion de toutes les propriétés héritées de la chaîne de prototypes. Il n'est donc pas nécessaire de vérifier la fonction hasOwnProperty().

Cependant, garde à l'esprit que Object.entries() n'est pas pris en charge par les anciens navigateurs (comme Internet Explorer). Si la compatibilité des navigateurs est un problème, tu devras peut-être utiliser un polyfill ou une autre méthode.

Pour plus d'informations sur Object.entries(), tu peux te référer à la documentation MDN.

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

La méthode Object.keys() renvoie un tableau de noms de propriétés énumérables d'un objet donné (clés). Nous pouvons utiliser la méthode forEach() pour itérer sur le tableau de clés et accéder aux valeurs correspondantes à l'aide des 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() en combinaison 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 tu n'as besoin que des clés d'un objet et que tu veux effectuer des opérations basées sur ces clés.

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

Pour plus d'informations sur Object.keys(), tu peux te référer à la documentation MDN.

Méthode 4 : Utilisation de 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 tu utilises déjà Lodash dans ton projet, tu peux tirer parti de sa méthode _.forOwn() pour parcourir les propriétés 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 énumérables d'un objet et fournit la valeur et la clé à la fonction de rappel. C'est une alternative pratique à la boucle for...in du javascript object.entries lorsque tu utilises déjà Lodash dans ton projet.

Note que l'utilisation de Lodash nécessite d'installer la bibliothèque et de l'importer dans ton projet. Si tu n'utilises pas Lodash à d'autres fins, il n'est peut-être pas nécessaire de l'inclure uniquement pour l'itération des objets.

Pour plus d'informations sur Lodash et ses méthodes d'itération de la boucle js par l'objet, tu peux te référer à la documentation de Lodash.

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

La méthode Object.values() renvoie un tableau des valeurs des propriétés énumérables d'un objet donné. Nous pouvons utiliser la méthode forEach() pour itérer à travers l'objet javascript sur le tableau de valeurs. Si tu as également besoin des clés correspondantes, tu peux 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() te permet d'itérer directement sur les valeurs d'un objet. Si tu as également besoin des clés correspondantes, tu peux les obtenir en utilisant Object.keys() et en accédant à la clé au même index que la valeur.

Cette méthode est utile lorsque tu as principalement besoin de travailler avec les valeurs d'un objet et éventuellement d'accéder aux clés lorsque c'est nécessaire.

Pour plus d'informations sur Object.values(), tu peux te référer à la documentation MDN.

Pour conclure

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

  • La boucle for...in est un moyen traditionnel d'itérer sur un objet en javascript. Elle est simple et largement supportée mais nécessite une vérification supplémentaire de hasOwnProperty() pour éviter d'itérer sur des propriétés héritées.
  • La méthode Object.entries(), combinée avec map() ou forEach(), fournit un moyen concis d'accéder à la fois 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 navigateurs plus anciens.
  • La méthode Object.keys(), ainsi que forEach(), permet d'itérer sur les clés d'un objet et d'accéder aux valeurs correspondantes. Elle est utile lorsque tu as principalement besoin de travailler avec les clés.
  • La méthode Lodash _.forOwn() est une option pratique si tu utilises déjà Lodash dans ton projet. Elle fournit une syntaxe propre pour itérer sur les propriétés d'un objet.
  • La méthode Object.values(), associée à forEach(), se concentre sur l'itération sur les valeurs d'un objet d'avant-plan. Tu peux utiliser Object.keys() conjointement si tu as également besoin des clés.

Lorsque tu choisis une méthode pour itérer sur un objet JavaScript, tu dois tenir compte de facteurs tels que la compatibilité avec les navigateurs, la lisibilité du code et les exigences spécifiques de ton cas d'utilisation. Quelle que soit la méthode choisie, il est essentiel de comprendre comment itérer efficacement sur les objets pour une programmation JavaScript efficace.

Ecris du code même si tu es débutant avec Latenode's AI Assistent

FAQ

Quelle est la différence entre for...in et Object.entries() ?

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() pour éviter d'itérer sur les propriétés héritées. D'autre part, Object.entries() renvoie un tableau de paires de propriétés [clé, valeur] énumérables d'un objet donné, qui peuvent être facilement parcourues à l'aide de méthodes telles que map() ou forEach(). Object.entries() n'inclut que les propriétés propres à l'objet, à l'exclusion des propriétés héritées.

Quelle méthode dois-je utiliser si je n'ai besoin que de clés ou que de valeurs ?

Si tu n'as besoin que des clés d'un objet js iterate, tu peux utiliser la méthode Object.keys(), qui renvoie un tableau de noms de propriétés énumérables d'un objet donné (clés). Si tu n'as besoin que des valeurs, tu peux utiliser la méthode Object.values(), qui renvoie un tableau des valeurs des propriétés énumérables d'un objet donné.

Quelle méthode est la plus rapide ou la plus efficace ?

Les performances des différentes méthodes peuvent varier en fonction du moteur JavaScript et de la taille de l'objet. En général, la boucle for...in est considérée comme légèrement plus rapide que l'utilisation de méthodes comme Object.entries() ou Object.keys() avec forEach(). Cependant, la différence de performance est souvent négligeable, à moins que tu n'aies affaire à des objets extrêmement volumineux. Il est recommandé de donner la priorité à la lisibilité et à la maintenabilité du code, à moins que tu n'aies des exigences spécifiques en matière de performances.

Comment puis-je itérer sur les entrées d'un objet tout en préservant l'ordre des clés ?

En JavaScript, les objets ne sont pas ordonnés par défaut, et l'ordre des clés n'est pas garanti. Si tu as besoin d'itérer sur les propriétés d'un objet dans un ordre spécifique, tu as quelques options :

  • Utilise la méthode Object.entries() pour obtenir un tableau de paires [clé, valeur], trier le tableau en fonction des clés, puis itérer sur le tableau trié.
  • Crée un tableau de clés dans l'ordre souhaité, puis accède aux valeurs correspondantes de l'objet à l'aide de ces clés.
  • Utilise une carte au lieu d'un objet, car la carte conserve l'ordre d'insertion des paires clé-valeur. Tu peux convertir un objet en carte en utilisant new Map(Object.entries(object)).

Puis-je utiliser des fonctions fléchées avec ces méthodes d'itération ?

Oui, tu peux utiliser des fonctions fléchées avec des méthodes comme map(), forEach() et _.forOwn(). Les fonctions fléchées fournissent une syntaxe concise pour écrire des expressions de fonction. Par exemple :



Object.entries(person).map(([key, value]) => {
  console.log(key + ': ' + value);
});


Cependant, n'oublie pas que les fonctions fléchées ont une liaison lexicale this, ce qui signifie qu'elles héritent de la valeur this de la portée environnante. Si tu as besoin d'accéder au contexte this dans le rappel d'itération, tu devras peut-être utiliser une expression de fonction régulière à la place.

Existe-t-il d'autres bibliothèques ou méthodes pour l'itération des objets ?

Oui, il existe plusieurs autres bibliothèques et méthodes qui fournissent des utilitaires pour l'itération des objets. Parmi les plus populaires, on peut citer :

  • Underscore.js : Fournit la méthode _.each() pour itérer sur les objets.
  • Lodash : Offre diverses méthodes comme _.forOwn(), _.forIn() et _.forEach() pour l'itération des objets.
  • jQuery : Possède la méthode $.each() qui peut être utilisée pour itérer sur les objets.

Ces bibliothèques offrent des fonctionnalités supplémentaires et peuvent être utiles si tu les utilises déjà dans ton projet. Cependant, si tu n'as besoin que d'une itération d'objet basique, les méthodes JavaScript natives abordées dans cet article sont suffisantes.

N'oublie pas que le choix de la méthode d'itération dépend de tes exigences spécifiques, de ta base de code et de tes préférences personnelles. Expérimente différentes approches et choisis celle qui améliore la lisibilité du code, la maintenabilité et l'efficacité dans ton cas d'utilisation particulier.

Blogs associés

Cas d'utilisation

Soutenu par