Introduction
In this lab, we will explore the concept of object equality in JavaScript. We will learn how to perform a deep comparison between two values to determine if they are equivalent using various techniques, such as checking if the values are identical, checking if they are non-object values with an equivalent value, and using Object.keys() to check if both values have the same number of keys. We will also understand how to use recursion to compare nested objects.
How to Check Object Equality in JavaScript
To check if two values are equivalent, follow these steps:
- Open the Terminal/SSH and type
nodeto start practicing coding. - Perform a deep comparison between the two values using the
equals()function. - Check if the two values are identical. If so, return
true. - Check if both values are
Dateobjects with the same time, usingDate.prototype.getTime(). If so, returntrue. - Check if both values are non-object values with an equivalent value (strict comparison). If so, return
true. - Check if only one value is
nullorundefinedor if their prototypes differ. If so, returnfalse. - If none of the above conditions are met, use
Object.keys()to check if both values have the same number of keys. - Use
Array.prototype.every()to check if every key inaexists inband if they are equivalent by callingequals()recursively.
Use the following code to implement the equals() function:
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]));
};
Use the following code examples to test the equals() function:
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
Summary
Congratulations! You have completed the Check Object Equality lab. You can practice more labs in LabEx to improve your skills.