reach-et-deep_equals
Version:
To deep compare objects
62 lines (47 loc) • 1.7 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('core-js/modules/es.object.keys.js'), require('reach-et-utilities/dist/checks')) :
typeof define === 'function' && define.amd ? define(['core-js/modules/es.object.keys.js', 'reach-et-utilities/dist/checks'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.ETDeepEquals = factory(null, global.checks));
})(this, (function (es_object_keys_js, checks) { 'use strict';
function deepEqual(value1, value2) {
if (Array.isArray(value1) && Array.isArray(value2)) {
return arrayDeepEqual(value1, value2);
}
if (checks.isObject(value1) && checks.isObject(value2)) {
return objectDeepEqual(value1, value2);
}
return value1 === value2;
}
function objectDeepEqual(object1, object2) {
var keys1 = Object.keys(object1);
var keys2 = Object.keys(object2);
if (keys1.length !== keys2.length) {
return false;
}
for (var _i = 0, _keys = keys1; _i < _keys.length; _i++) {
var key = _keys[_i];
var val1 = object1[key];
var val2 = object2[key];
if (!deepEqual(val1, val2)) {
return false;
}
}
return true;
}
function arrayDeepEqual(array1, array2) {
if (array1.length !== array2.length) {
return false;
}
for (var i = 0; i < array1.length; i += 1) {
var val1 = array1[i];
var val2 = array2[i];
if (!deepEqual(val1, val2)) {
return false;
}
}
return true;
}
/* eslint-enable no-use-before-define */
return deepEqual;
}));
//# sourceMappingURL=index.js.map