![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/vreg/node_modules/bootstrap-vue/src/utils/ |
import { hasOwnProperty, keys } from './object' import { isArray, isDate, isObject } from './inspect' // Assumes both a and b are arrays! // Handles when arrays are "sparse" (array.every(...) doesn't handle sparse) const compareArrays = (a, b) => { if (a.length !== b.length) { return false } let equal = true for (let i = 0; equal && i < a.length; i++) { equal = looseEqual(a[i], b[i]) } return equal } /** * Check if two values are loosely equal - that is, * if they are plain objects, do they have the same shape? * Returns boolean true or false */ export const looseEqual = (a, b) => { if (a === b) { return true } let aValidType = isDate(a) let bValidType = isDate(b) if (aValidType || bValidType) { return aValidType && bValidType ? a.getTime() === b.getTime() : false } aValidType = isArray(a) bValidType = isArray(b) if (aValidType || bValidType) { return aValidType && bValidType ? compareArrays(a, b) : false } aValidType = isObject(a) bValidType = isObject(b) if (aValidType || bValidType) { /* istanbul ignore if: this if will probably never be called */ if (!aValidType || !bValidType) { return false } const aKeysCount = keys(a).length const bKeysCount = keys(b).length if (aKeysCount !== bKeysCount) { return false } for (const key in a) { const aHasKey = hasOwnProperty(a, key) const bHasKey = hasOwnProperty(b, key) if ((aHasKey && !bHasKey) || (!aHasKey && bHasKey) || !looseEqual(a[key], b[key])) { return false } } } return String(a) === String(b) }