我有 2 个大对象要比较。我想知道它们是否相等。
JSON.stringify(obj1) == JSON.stringify(obj2)
不起作用,因为对象是动态创建的,所以属性的顺序是随机的。
所以我写了一个isEqual()
如下。
function isEqual(ar1, ar2) {
if(ar1 !== ar2) {
if(typeof ar1 !== typeof ar2) {
return false;
}
if(ar1 == null) {
if(ar2 == null) {
return true;
}
return false;
}
if(ar2 == null) {
if(ar1 == null) {
return true;
}
return false;
}
if(typeof ar1 !== 'object') {
return false;
}
if (ar1.length !== ar2.length) {
return false;
}
for(var i in ar1) {
if(!isEqual(ar1[i], ar2[i])) {
return false;
}
}
for(var i in ar2) {
if(!isEqual(ar1[i], ar2[i])) {
return false;
}
}
}
return true;
}
现在,如果我运行 isEqual(obj1, obj2)
,chrome 中的选项卡会卡住,我无法关闭该选项卡。我必须等到 chrome 要求我在大约 10 分钟后关闭无响应的选项卡。如何解决?
最佳答案
使用 Lodash 的 isEqual
为您完成此操作。
关于javascript - 递归 isEqual 函数导致 Chrome 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45919725/