CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes45downloads
_baseIsEqualDeep.js84 linesDownload Raw Back to lodash-es
1import Stack from './_Stack.js';2import equalArrays from './_equalArrays.js';3import equalByTag from './_equalByTag.js';4import equalObjects from './_equalObjects.js';5import getTag from './_getTag.js';6import isArray from './isArray.js';7import isBuffer from './isBuffer.js';8import isTypedArray from './isTypedArray.js';9 10/** Used to compose bitmasks for value comparisons. */11var COMPARE_PARTIAL_FLAG = 1;12 13/** `Object#toString` result references. */14var argsTag = '[object Arguments]',15    arrayTag = '[object Array]',16    objectTag = '[object Object]';17 18/** Used for built-in method references. */19var objectProto = Object.prototype;20 21/** Used to check objects for own properties. */22var hasOwnProperty = objectProto.hasOwnProperty;23 24/**25 * A specialized version of `baseIsEqual` for arrays and objects which performs26 * deep comparisons and tracks traversed objects enabling objects with circular27 * references to be compared.28 *29 * @private30 * @param {Object} object The object to compare.31 * @param {Object} other The other object to compare.32 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.33 * @param {Function} customizer The function to customize comparisons.34 * @param {Function} equalFunc The function to determine equivalents of values.35 * @param {Object} [stack] Tracks traversed `object` and `other` objects.36 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.37 */38function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {39  var objIsArr = isArray(object),40      othIsArr = isArray(other),41      objTag = objIsArr ? arrayTag : getTag(object),42      othTag = othIsArr ? arrayTag : getTag(other);43 44  objTag = objTag == argsTag ? objectTag : objTag;45  othTag = othTag == argsTag ? objectTag : othTag;46 47  var objIsObj = objTag == objectTag,48      othIsObj = othTag == objectTag,49      isSameTag = objTag == othTag;50 51  if (isSameTag && isBuffer(object)) {52    if (!isBuffer(other)) {53      return false;54    }55    objIsArr = true;56    objIsObj = false;57  }58  if (isSameTag && !objIsObj) {59    stack || (stack = new Stack);60    return (objIsArr || isTypedArray(object))61      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)62      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);63  }64  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {65    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),66        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');67 68    if (objIsWrapped || othIsWrapped) {69      var objUnwrapped = objIsWrapped ? object.value() : object,70          othUnwrapped = othIsWrapped ? other.value() : other;71 72      stack || (stack = new Stack);73      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);74    }75  }76  if (!isSameTag) {77    return false;78  }79  stack || (stack = new Stack);80  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);81}82 83export default baseIsEqualDeep;84 
basant307/AI_Governance_Project · CoolFace