我有2級大的要比較的對象。我想知道他們是否平等。
JSON.stringify(obj1) == JSON.stringify(obj2)
不起作用,因爲是動態創建的對象,使屬性的順序是隨機的。遞歸函數的isEqual導致鉻凍結
所以我寫了一個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要求我在大約10分鐘後關閉不響應的選項卡。如何解決這個問題?
什麼是您的輸入數據?你有循環參考嗎? – PeterMader
如果在對象中有循環,則遞歸遍歷可能會卡住。 – Pointy
你可能有循環引用,你可以使用https://lodash.com/docs/4.17.4#isEqual檢查平等 – marvel308