新濠天地是否相等_新濠天地网 新濠天地是否相等_新濠天地网

新濠天地网

新濠天地是否相等

7月以前  |  官网数:93 次  |    

//如果用JSON.stringify转化属性顺序不同,也不相等;
//而且不支持无法对新濠天地 、RegExp等特殊新濠天地的克隆
function deepCompare(x, y) {
var i, l, leftChain, rightChain;
function compare2Objects(x, y) {
var p;
// remember that NaN === NaN returns false
// and isNaN(undefined) returns true
if (isNaN(x) && isNaN(y) && typeof x === 'number' && typeof y === 'number') {
return true;
}
// Compare primitives and functions.
// Check if both arguments link to the same object.
// Especially useful on the step where we compare prototypes
if (x === y) {
return true;
}
// Works in case when functions are created in constructor.
// Comparing dates is a common scenario. Another built-ins?
// We can even handle functions passed across iframes
if ((typeof x === 'function' && typeof y === 'function') || (x instanceof Date && y instanceof Date) || (x instanceof RegExp && y instanceof RegExp) || (x instanceof String && y instanceof String) || (x instanceof Number && y instanceof Number)) {
return x.toString() === y.toString();
}
// At last checking prototypes as good as we can
if (!(x instanceof Object && y instanceof Object)) {
return false;
}
if (x.isPrototypeOf(y) || y.isPrototypeOf(x)) {
return false;
}
if (x.constructor !== y.constructor) {
return false;
}
if (x.prototype !== y.prototype) {
return false;
}
// Check for infinitive linking loops
if (leftChain.indexOf(x) > -1 || rightChain.indexOf(y) > -1) {
return false;
}
// Quick checking of one object being a subset of another.
// todo: cache the structure of arguments[0] for performance
for (p in y) {
if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {
return false;
} else if (typeof y[p] !== typeof x[p]) {
return false;
}
}
for (p in x) {
if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {
return false;
} else if (typeof y[p] !== typeof x[p]) {
return false;
}
switch (typeof(x[p])) {
case 'object':
case 'function':
leftChain.push(x);
rightChain.push(y);
if (!compare2Objects(x[p], y[p])) {
return false;
}
leftChain.pop();
rightChain.pop();
break;
default:
if (x[p] !== y[p]) {
return false;
}
break;
}
}
return true;
}
if (arguments.length < 1) {
return true;
}
for (i = 1, l = arguments.length; i < l; i++) {
leftChain = []; //Todo: this can be cached
rightChain = [];
if (!compare2Objects(arguments[0], arguments[i])) {
return false;
}
}
return true;
}
const obj1 = {
name: '张三',
age: 23,
obj: {
name: '李四',
age: 46
},
arr: [1, 2, 3],
date: new Date(23),
reg: new RegExp('abc'),
fun: () = > {}
}
const obj2 = {
name: '张三',
age: 23,
obj: {
name: '李四',
age: 46
},
arr: [1, 2, 3],
date: new Date(23),
reg: new RegExp('abc'),
fun: () = > {}
}
console.log(deepCompare(obj1, obj2)) // true

相关新濠天地:


SSH 登录失败:Host key verification failed

PHP分页新濠天地制作新濠天地讲解

将二进制数据转为16进制以便新濠天地

PHP自定义新濠天地获取搜索引擎来源关键字的方法

获取IMSI

Java生成UUID

在Zeus Web Server中安装PHP语言支持

让你成为最历害的git提交人

获取IMEI

再谈PHP中单双引号的区别详解

Python 2与Python 3版本和编码的对比

PHP实现简单爬虫的方法

php+ajax+json 详解及实例app

wget使用技巧

php封装的page分页类完整实例

php实现数组中索引关联数据转换成json新濠天地的方法

php数组合并array_merge()新濠天地使用注意事项

桌面中心(一)创建数据库

指定应用ID以获取对应的应用名称

PHP设计模式之工厂模式与单例模式
qy77千亿国际富爸爸娱乐官网qy77千亿国际