react-autosuggest
Version:
WAI-ARIA compliant React autosuggest component
61 lines (45 loc) • 1.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = compareObjects;
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function compareObjects(objA, objB) {
var keys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
if (objA === objB) {
return false;
}
var aKeys = Object.keys(objA);
var bKeys = Object.keys(objB);
if (aKeys.length !== bKeys.length) {
return true;
}
var keysMap = {};
var i, len;
for (i = 0, len = keys.length; i < len; i++) {
keysMap[keys[i]] = true;
}
for (i = 0, len = aKeys.length; i < len; i++) {
var key = aKeys[i];
var aValue = objA[key];
var bValue = objB[key];
if (aValue === bValue) {
continue;
}
if (!keysMap[key] || aValue === null || bValue === null || _typeof(aValue) !== 'object' || _typeof(bValue) !== 'object') {
return true;
}
var aValueKeys = Object.keys(aValue);
var bValueKeys = Object.keys(bValue);
if (aValueKeys.length !== bValueKeys.length) {
return true;
}
for (var n = 0, length = aValueKeys.length; n < length; n++) {
var aValueKey = aValueKeys[n];
if (aValue[aValueKey] !== bValue[aValueKey]) {
return true;
}
}
}
return false;
}