请告诉我比较包含循环对象的 JavaScript 对象。
如下,返回真,因为a1等于a2。
a1 = {}
a1.b = 1
a1.c = 2
a1.d = a
a2 = {}
a2.b = 1
a2.c = 2
a2.d = a2
如下,返回false,因为a1不等于a2。
a1 = {}
a1.b = 1
a1.c = 2
a1.d = a
a2 = {}
a2.b = 1
a2.c = 2
a2.d = a2
a2.e = a2
请告诉我比较包含循环对象的 JavaScript 对象。
如下,返回真,因为a1等于a2。
a1 = {}
a1.b = 1
a1.c = 2
a1.d = a
a2 = {}
a2.b = 1
a2.c = 2
a2.d = a2
如下,返回false,因为a1不等于a2。
a1 = {}
a1.b = 1
a1.c = 2
a1.d = a
a2 = {}
a2.b = 1
a2.c = 2
a2.d = a2
a2.e = a2
Try this jsfiddle
var a1 = {}
a1.b = 1
a1.c = 2
a1.d = a1
var a2 = {}
a2.b = 1
a2.c = 2
a2.d = a2
function isSame(a,b){
var same = true;
if(a === b){
return true;
}
for(var i in a){
if(typeof a[i] == "object" ){
if( a[i] == a){
continue;
}
same = isSame(a[i], b[i]);
if(same == false){
return same;
}
}
if(a[i] !== b[i])
return false;
}
return true
}
console.log(isSame(a1, a2) );