L'itération sur des objets est une tâche fondamentale de la programmation JavaScript. Contrairement aux tableaux, les objets en JavaScript ne sont pas itérables par défaut, ce qui signifie que vous ne pouvez pas utiliser de méthodes telles que forEach(), map() ou for...of directement sur un objet. Cependant, il existe 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 parcourir efficacement un objet JavaScript, ainsi que leur syntaxe, leurs exemples et leurs cas d'utilisation.
Principaux plats à emporter: Les objets JavaScript ne sont pas intrinsèquement itérables, mais plusieurs méthodes existent pour parcourir 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é du navigateur, de la lisibilité du code et des cas d'utilisation spécifiques. Bien que les performances puissent varier légèrement entre 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 le code même si vous êtes débutant avec l'assistant IA de Latenode
Méthode 1 : Utilisation de la boucle for...in
La boucle for...in est une méthode traditionnelle pour parcourir 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 comment cela fonctionne :
syntaxe:
for (let key in object) {
if (object.hasOwnProperty(key)) {
// Perform operations with key and object[key]
}
}
Mise en situation :
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 garantit que vous n'itérez que sur les propriétés propres de l'objet et évitez toute propriété héritée.
La boucle JavaScript for...in sur un objet est un moyen simple d'itérer sur les propriétés d'un objet. Cependant, elle présente quelques limitations :
Il parcourt 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 ne sont pas nécessairement accessibles dans le même ordre que celui dans lequel elles ont été définies.
Malgré ces limitations, 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 de paires de propriétés [clé, valeur] à clé de chaîne énumérables propres à un objet donné. Nous pouvons ensuite utiliser la méthode map() pour parcourir 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
Mise en situation :
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() fournit 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 parcourir le tableau et effectuer des opérations sur chaque paire clé-valeur.
L'un des avantages de l'utilisation de Object.entries() est qu'elle ne renvoie que les propriétés énumérables propres à l'objet, à l'exclusion de toutes les propriétés héritées de la chaîne de prototypes. Cela élimine le besoin d'une vérification supplémentaire de hasOwnProperty().
Cependant, gardez à l'esprit que Object.entries() n'est pas pris en charge dans les navigateurs plus anciens (tels qu'Internet Explorer). Si la compatibilité du navigateur est un problème, vous devrez peut-être utiliser un polyfill ou une méthode alternative.
Pour plus d'informations sur Object.entries(), vous pouvez vous 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 propres à un objet donné (clés). Nous pouvons utiliser la méthode forEach() pour parcourir 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]
});
Mise en situation :
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'effectuer une itération sur les clés d'un objet et d'accéder aux valeurs correspondantes. Cette méthode est utile lorsque vous n'avez besoin que des clés d'un objet et que vous souhaitez effectuer des opérations basées sur ces clés.
Similaire à Object.entries(), Object.keys() renvoie uniquement les propriétés énumérables de l'objet, vous n'avez donc pas besoin d'utiliser hasOwnProperty() pour filtrer les propriétés héritées.
Pour plus d'informations sur Object.keys(), vous pouvez vous référer au 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 vous utilisez déjà Lodash dans votre projet, vous pouvez exploiter sa méthode _.forOwn() pour parcourir les propriétés propres d'un objet.
syntaxe:
_.forOwn(object, (value, key) => {
// Perform operations with key and value
});
Mise en situation :
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() parcourt les propriétés énumérables d'un objet et fournit la valeur et la clé à la fonction de rappel. Il s'agit d'une alternative pratique à la boucle for...in via le javascript object.entries lorsque vous utilisez déjà Lodash dans votre projet.
Notez que l'utilisation de Lodash nécessite l'installation de la bibliothèque et son importation dans votre projet. Si vous n'utilisez pas Lodash à d'autres fins, il n'est peut-être pas nécessaire de l'inclure uniquement pour l'itération d'objet.
Pour plus d'informations sur Lodash et sa boucle js à travers les méthodes d'itération d'objet, vous pouvez vous référer au 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 de valeurs de propriétés énumérables propres à un objet donné. Nous pouvons utiliser la méthode forEach() pour parcourir le javascript de l'objet sur le tableau de valeurs. Si vous avez également besoin des clés correspondantes, vous pouvez utiliser la méthode Object.keys() en conjonction.
syntaxe:
Object.values(object).forEach((value, index) => {
const key = Object.keys(object)[index];
// Perform operations with key and value
});
Mise en situation :
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'effectuer une itération directement sur les valeurs d'un objet. Si vous avez également besoin des clés correspondantes, vous pouvez 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 vous devez principalement travailler avec les valeurs d'un objet et éventuellement accéder aux clés lorsque cela est nécessaire.
Pour plus d'informations sur Object.values(), vous pouvez vous référer à la Documentation MDN.
Emballage en place
Dans cet article, nous avons exploré différentes méthodes pour parcourir un objet d'itération JavaScript. Chaque méthode a ses propres avantages et cas d'utilisation :
La boucle for...in est une méthode traditionnelle pour parcourir les objets JavaScript. Elle est simple et largement prise en charge, mais nécessite une vérification supplémentaire de hasOwnProperty() pour éviter de parcourir les propriétés héritées.
La méthode Object.entries(), combinée à map() ou forEach(), fournit un moyen concis 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 dans les navigateurs plus anciens.
La méthode Object.keys(), ainsi que forEach(), permettent d'effectuer une itération 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 fournit une syntaxe claire pour parcourir les propriétés propres d'un objet.
La méthode Object.values(), couplée à forEach(), se concentre sur l'itération des valeurs d'un objet foreach. Vous pouvez utiliser Object.keys() conjointement si vous avez également besoin des clés.
Lorsque vous choisissez une méthode pour parcourir un objet JavaScript, tenez compte de facteurs tels que la compatibilité du navigateur, la lisibilité du code et les exigences spécifiques de votre cas d'utilisation. Quelle que soit la méthode choisie, il est essentiel de comprendre comment parcourir efficacement les objets pour une programmation JavaScript efficace.
Écrivez le code même si vous êtes débutant avec l'assistant IA de Latenode
QFP
Quelle est la différence entre for...in et Object.entries() ?
La boucle for...in parcourt 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 [clé, valeur] de propriétés énumérables à clé de chaîne d'un objet donné, qui peuvent être facilement parcourues à l'aide de méthodes comme map() ou forEach(). Object.entries() n'inclut que les propriétés propres à l'objet, à l'exclusion de celles héritées.
Quelle méthode dois-je utiliser si j’ai uniquement besoin de clés ou uniquement de valeurs ?
Si vous n'avez besoin que des clés d'un objet js iterate, vous pouvez utiliser la méthode Object.keys(), qui renvoie un tableau des noms de propriétés énumérables propres à un objet donné (clés). Si vous n'avez besoin que des valeurs, vous pouvez utiliser la méthode Object.values(), qui renvoie un tableau des valeurs de propriétés énumérables propres à 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 telles que Object.entries() ou Object.keys() avec forEach(). Cependant, la différence de performances est souvent négligeable, sauf si vous avez affaire à des objets extrêmement volumineux. Il est recommandé de privilégier la lisibilité et la maintenabilité du code, sauf si vous avez des exigences de performances spécifiques.
Comment puis-je parcourir les entrées d’un objet tout en préservant l’ordre des clés ?
Les objets en JavaScript ne sont pas ordonnés par défaut et l'ordre des clés n'est pas garanti. Si vous devez parcourir les propriétés d'un objet dans un ordre spécifique, vous avez plusieurs options :
Utilisez la méthode Object.entries() pour obtenir un tableau de paires [clé, valeur], triez le tableau en fonction des clés, puis parcourez le tableau trié.
Créez un tableau de clés dans l’ordre souhaité, puis accédez aux valeurs correspondantes de l’objet à l’aide de ces clés.
Utilisez une carte au lieu d'un objet, car la carte conserve l'ordre d'insertion des paires clé-valeur. Vous pouvez convertir un objet en carte à l'aide de new Map(Object.entries(object)).
Puis-je utiliser des fonctions fléchées avec ces méthodes d’itération ?
Oui, vous pouvez utiliser des fonctions fléchées avec des méthodes telles que map(), forEach() et _.forOwn(). Les fonctions fléchées fournissent une syntaxe concise pour écrire des expressions de fonction. Par exemple :
Cependant, gardez à l'esprit 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 vous devez accéder au contexte this dans le rappel d'itération, vous devrez 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 d’objets ?
Oui, il existe plusieurs autres bibliothèques et méthodes qui fournissent des utilitaires pour l'itération d'objets. Parmi les plus populaires, on trouve :
Underscore.js : fournit la méthode _.each() pour parcourir les objets.
Lodash : propose diverses méthodes telles que _.forOwn(), _.forIn() et _.forEach() pour l'itération d'objet.
jQuery : possède la méthode $.each() qui peut être utilisée pour parcourir les objets.
Ces bibliothèques offrent des fonctionnalités supplémentaires et peuvent être utiles si vous les utilisez déjà dans votre projet. Cependant, si vous n'avez besoin que d'une itération d'objet de base, les méthodes JavaScript natives décrites dans cet article sont suffisantes.
N'oubliez pas que le choix de la méthode d'itération dépend de vos exigences spécifiques, de votre base de code et de vos préférences personnelles. Expérimentez différentes approches et choisissez celle qui améliore la lisibilité, la maintenabilité et l'efficacité du code dans votre cas d'utilisation particulier.