cpt-waffle-lotide
Version:
LoTide in Typescript
44 lines (43 loc) • 1.55 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const eqArrays_1 = __importDefault(require("./eqArrays"));
const primatives = ['number', 'string', 'boolean'];
const isObjectButNotArray = (obj) => {
return typeof obj === 'object' && !Array.isArray(obj);
};
const eqObjects = (object1, object2) => {
const obj1Keys = Object.keys(object1).sort();
const obj2Keys = Object.keys(object2).sort();
if (obj1Keys.length !== obj2Keys.length) {
return false;
}
if (!(0, eqArrays_1.default)(obj1Keys, obj2Keys)) {
return false;
}
for (let key of obj1Keys) {
if (primatives.indexOf(typeof object1[key]) !== -1 && primatives.indexOf(typeof object2[key]) !== -1) {
if (object1[key] !== object2[key])
return false;
}
else {
if (Array.isArray(object1[key]) && Array.isArray(object2[key])) {
if (!(0, eqArrays_1.default)(object1[key], object2[key])) {
return false;
}
}
else if (isObjectButNotArray(object1[key]) && isObjectButNotArray(object2[key])) {
if (!eqObjects(object1[key], object2[key])) {
return false;
}
}
else {
return false;
}
}
}
return true;
};
exports.default = eqObjects;