@replyke/core
Version:
Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.
63 lines • 1.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.deepEqual = deepEqual;
exports.shallowEqual = shallowEqual;
/**
* Performs deep equality check for nested objects and arrays
*/
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
*/
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