@replyke/core
Version:
Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.
59 lines • 1.53 kB
JavaScript
/**
* Performs deep equality check for nested objects and arrays
*/
export function deepEqual(obj1, obj2) {
if (obj1 === obj2) {
return true;
}
if (obj1 == null || obj2 == null) {
return obj1 === obj2;
}
if (typeof obj1 !== typeof obj2) {
return false;
}
if (typeof obj1 !== "object") {
return obj1 === obj2;
}
if (Array.isArray(obj1) !== Array.isArray(obj2)) {
return false;
}
var keys1 = Object.keys(obj1);
var keys2 = Object.keys(obj2);
if (keys1.length !== keys2.length) {
return false;
}
for (var _i = 0, keys1_1 = keys1; _i < keys1_1.length; _i++) {
var key = keys1_1[_i];
if (!(key in obj2)) {
return false;
}
if (!deepEqual(obj1[key], obj2[key])) {
return false;
}
}
return true;
}
/**
* Performs shallow equality check for objects
*/
export function shallowEqual(obj1, obj2) {
if (obj1 === obj2) {
return true;
}
if (!obj1 || !obj2 || typeof obj1 !== "object" || typeof obj2 !== "object") {
return false;
}
var keys1 = Object.keys(obj1);
var keys2 = Object.keys(obj2);
if (keys1.length !== keys2.length) {
return false;
}
for (var _i = 0, keys1_2 = keys1; _i < keys1_2.length; _i++) {
var key = keys1_2[_i];
if (!(key in obj2) || obj1[key] !== obj2[key]) {
return false;
}
}
return true;
}
//# sourceMappingURL=objectComparison.js.map