Comment vérifier si un objet JavaScript est vide : 5 méthodes efficaces

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

« L'objet est-il vide — ou pas ? » Décortiquons l'éternel casse-tête du développeur JavaScript

\n\n

Imaginez : vous écrivez une application, vous recevez une réponse d'une API, et vous devez comprendre — les données sont-elles arrivées ? Ou l'objet est-il vide, et il est temps d'afficher un message par défaut à l'utilisateur ? Ou vous traitez un formulaire, et vous devez vérifier si l'utilisateur a rempli au moins un champ ? Une situation douloureusement familière pour quiconque écrit en JavaScript.

\n\n

On pourrait penser que c'est simple ? if (obj === {}) — et le tour est joué ? Hélas, non. En JavaScript, deux objets, même avec un contenu absolument identique, ne seront jamais égaux l'un à l'autre, à moins qu'il ne s'agisse du même objet en mémoire. Vérifier si un objet JavaScript est vide — c'est cette tâche qui a rassemblé des milliers de vues sur Stack Overflow et a engendré toute une industrie de solutions.

\n\n

Dans cet article, nous allons analyser 5 méthodes fiables pour déterminer si vous avez affaire à un objet vide. Des classiques aux modernes, des rapides aux sécurisées. C'est parti !

\n\n

Que signifie « objet vide » en JavaScript ?

\n\n

Avant de se jeter dans le code, mettons-nous d'accord sur les termes. Un objet vide en JavaScript est un objet qui n'a pas de propriétés propres énumérables. Autrement dit, {} est vide. En revanche, { name: "Alice" } ne l'est pas.

\n\n

Une nuance importante : tout objet a un prototype (Object.prototype), et donc des propriétés héritées (par exemple, toString, hasOwnProperty). Celles-ci ne nous intéressent pas. Nous vérifions uniquement ce que nous avons ajouté.

\n\n

Un autre piège est null. Si une variable est égale à null ou undefined, nous ne pouvons même pas appeler ses méthodes. Par conséquent, la première chose à faire est toujours de vérifier que l'objet existe.

\n\n

Méthode 1 : Object.keys() — l'étalon-or

\n\n

La méthode la plus populaire et recommandée en JavaScript moderne. La méthode Object.keys() retourne un tableau des propriétés propres énumérables de l'objet. Si le tableau est vide, l'objet est vide.

\n\n
function isEmpty(obj) {\n    return Object.keys(obj).length === 0;\n}\n\n// Exemples d'utilisation\nconsole.log(isEmpty({}));           // true\nconsole.log(isEmpty({a: 1}));       // false\nconsole.log(isEmpty({name: 'John', age: 30})); // false
\n\n

Pourquoi cela fonctionne-t-il ? Object.keys() ignore les propriétés héritées et retourne uniquement ce qui appartient à l'objet lui-même. Vérifier si un objet est vide avec Object.keys() — c'est un code propre, lisible et rapide.

\n\n

Important : Cette méthode ne vérifie pas si la valeur passée est un objet. Si vous passez une chaîne de caractères ou un nombre, elle retournera un tableau vide, et nous conclurons à tort que l'objet est vide. Par conséquent, pour plus de sécurité, ajoutons une vérification de type :

\n\n
function isEmptySafe(obj) {\n    return obj && typeof obj === 'object' && Object.keys(obj).length === 0;\n}\n\nconsole.log(isEmptySafe('hello')); // false (une chaîne n'est pas un objet)\nconsole.log(isEmptySafe(null));    // false\nconsole.log(isEmptySafe({}));      // true
\n\n

Méthode 2 : JSON.stringify() — inattendue mais fonctionnelle

\n\n

Parfois, les programmeurs appellent en plaisantant cette méthode « une béquille », mais elle fonctionne. L'idée est simple : sérialiser l'objet en une chaîne JSON et la comparer à '{}'.

\n\n
function isEmptyJSON(obj) {\n    return JSON.stringify(obj) === '{}';\n}\n\nconsole.log(isEmptyJSON({}));           // true\nconsole.log(isEmptyJSON({key: 'val'})); // false
\n\n

Pourquoi cette méthode n'est-elle pas idéale ? Premièrement, JSON.stringify() ignore les fonctions, undefined et les symboles. Si un objet a une propriété avec la valeur undefined, elle disparaîtra simplement lors de la sérialisation, et l'objet sera considéré comme vide, alors qu'en réalité il a une clé.

\n\n
const obj = { a: undefined };\nconsole.log(isEmptyJSON(obj)); // true — alors que ça devrait être false !
\n\n

Deuxièmement

Blogs

Book Recommendations