UNPKG

@resourge/react-fetch

Version:

[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)

40 lines (38 loc) 1.52 kB
/** * react-fetch v1.43.1 * * Copyright (c) resourge. * * This source code is licensed under the MIT license found in the * LICENSE.md file in the root directory of this source tree. * * @license MIT */ function deepCompare(obj1, obj2, keysToCheck = { keys: new Set() }) { if (obj1 === obj2) { return true; } if (obj1 instanceof Date && obj2 instanceof Date) { return obj1.getTime() === obj2.getTime(); } if (!obj1 || !obj2 || typeof obj1 !== 'object' || typeof obj2 !== 'object') { return false; } const shouldFilter = keysToCheck.keys.size && !keysToCheck.all; if (Array.isArray(obj1) && Array.isArray(obj2)) { if (obj1.length !== obj2.length) { return false; } const filteredObj1 = shouldFilter ? obj1.filter((_, i) => keysToCheck.keys.has(String(i))) : obj1; const filteredObj2 = shouldFilter ? obj2.filter((_, i) => keysToCheck.keys.has(String(i))) : obj2; return filteredObj1.length === filteredObj2.length && filteredObj1.every((item, i) => deepCompare(item, filteredObj2[i], keysToCheck.state)); } const keys1 = shouldFilter ? Object.keys(obj1).filter(key => keysToCheck.keys.has(key)) : Object.keys(obj1); const keys2 = shouldFilter ? Object.keys(obj2).filter(key => keysToCheck.keys.has(key)) : Object.keys(obj2); if (keys1.length !== keys2.length) return false; return keys1.every(key => keys2.includes(key) && deepCompare(obj1[key], obj2[key], keysToCheck.state)); } export { deepCompare }; //# sourceMappingURL=comparationUtils.js.map