Introduction
Dans ce laboratoire, nous allons explorer le concept d'égalité d'objets en JavaScript. Nous allons apprendre à effectuer une comparaison approfondie entre deux valeurs pour déterminer si elles sont équivalentes en utilisant diverses techniques, telles que vérifier si les valeurs sont identiques, vérifier si elles sont des valeurs non-objets avec une valeur équivalente, et utiliser Object.keys() pour vérifier si les deux valeurs ont le même nombre de clés. Nous allons également comprendre comment utiliser la récursion pour comparer des objets imbriqués.
Comment vérifier l'égalité d'objets en JavaScript
Pour vérifier si deux valeurs sont équivalentes, suivez ces étapes :
- Ouvrez le Terminal/SSH et tapez
nodepour commencer à pratiquer la programmation. - Effectuez une comparaison approfondie entre les deux valeurs en utilisant la fonction
equals(). - Vérifiez si les deux valeurs sont identiques. Si c'est le cas, renvoyez
true. - Vérifiez si les deux valeurs sont des objets
Dateavec la même heure, en utilisantDate.prototype.getTime(). Si c'est le cas, renvoyeztrue. - Vérifiez si les deux valeurs sont des valeurs non-objets avec une valeur équivalente (comparaison stricte). Si c'est le cas, renvoyez
true. - Vérifiez si seule une des valeurs est
nullouundefinedou si leurs prototypes diffèrent. Si c'est le cas, renvoyezfalse. - Si aucune des conditions ci-dessus n'est remplie, utilisez
Object.keys()pour vérifier si les deux valeurs ont le même nombre de clés. - Utilisez
Array.prototype.every()pour vérifier si chaque clé dansaexiste dansbet si elles sont équivalentes en appelantequals()de manière récursive.
Utilisez le code suivant pour implémenter la fonction equals() :
const equals = (a, b) => {
if (a === b) return true;
if (a instanceof Date && b instanceof Date)
return a.getTime() === b.getTime();
if (!a || !b || (typeof a !== "object" && typeof b !== "object"))
return a === b;
if (a.prototype !== b.prototype) return false;
const keys = Object.keys(a);
if (keys.length !== Object.keys(b).length) return false;
return keys.every((k) => equals(a[k], b[k]));
};
Utilisez les exemples de code suivants pour tester la fonction equals() :
equals(
{ a: [2, { e: 3 }], b: [4], c: "foo" },
{ a: [2, { e: 3 }], b: [4], c: "foo" }
); // true
equals([1, 2, 3], { 0: 1, 1: 2, 2: 3 }); // true
Résumé
Félicitations ! Vous avez terminé le laboratoire sur la vérification de l'égalité d'objets. Vous pouvez pratiquer d'autres laboratoires dans LabEx pour améliorer vos compétences.