UNPKG

react-native-web-headroom

Version:
48 lines (36 loc) 1.18 kB
'use strict'; var fetchKeys = require('lodash.keys'); module.exports = function shallowEqual(objA, objB, compare, compareContext) { var ret = compare ? compare.call(compareContext, objA, objB) : void 0; if (ret !== void 0) { return !!ret; } if (objA === objB) { return true; } if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) { return false; } var keysA = fetchKeys(objA); var keysB = fetchKeys(objB); var len = keysA.length; if (len !== keysB.length) { return false; } compareContext = compareContext || null; // Test for A's keys different from B. var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); for (var i = 0; i < len; i++) { var key = keysA[i]; if (!bHasOwnProperty(key)) { return false; } var valueA = objA[key]; var valueB = objB[key]; var _ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0; if (_ret === false || _ret === void 0 && valueA !== valueB) { return false; } } return true; };