| Server IP : 68.183.124.220 / Your IP : 216.73.217.137 Web Server : Apache/2.4.18 (Ubuntu) System : Linux Sandbox-A 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : gavin ( 1000) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/gavin/workspace/happymandarin/node_modules/es5-ext/object/ |
Upload File : |
'use strict';
var eq = require('./eq')
, isPlainObject = require('./is-plain-object')
, value = require('./valid-value')
, isArray = Array.isArray, keys = Object.keys
, propertyIsEnumerable = Object.prototype.propertyIsEnumerable
, eqArr, eqVal, eqObj;
eqArr = function (a, b, recMap) {
var i, l = a.length;
if (l !== b.length) return false;
for (i = 0; i < l; ++i) {
if (a.hasOwnProperty(i) !== b.hasOwnProperty(i)) return false;
if (!eqVal(a[i], b[i], recMap)) return false;
}
return true;
};
eqObj = function (a, b, recMap) {
var k1 = keys(a), k2 = keys(b);
if (k1.length !== k2.length) return false;
return k1.every(function (key) {
if (!propertyIsEnumerable.call(b, key)) return false;
return eqVal(a[key], b[key], recMap);
});
};
eqVal = function (a, b, recMap) {
var i, eqX, c1, c2;
if (eq(a, b)) return true;
if (isPlainObject(a)) {
if (!isPlainObject(b)) return false;
eqX = eqObj;
} else if (isArray(a) && isArray(b)) {
eqX = eqArr;
} else {
return false;
}
c1 = recMap[0];
c2 = recMap[1];
i = c1.indexOf(a);
if (i !== -1) {
if (c2[i].indexOf(b) !== -1) return true;
} else {
i = c1.push(a) - 1;
c2[i] = [];
}
c2[i].push(b);
return eqX(a, b, recMap);
};
module.exports = function (a, b) {
if (eq(value(a), value(b))) return true;
return eqVal(Object(a), Object(b), [[], []]);
};