本文演示了Javascript如何以同样的方式比较两个对象:

在Python中,CMP()的内置函数可以用来比较两个对象包含的数据是否相等(数组、序列、字典),但Javascript语言中没有相关的实现。


函数(x,y){
如果x和y是 null或未定义的,且完全相同。
如果(x = y){
返回true;
}

如果它们不是严格的/相等的,它们都需要是对象。
如果(!(X是对象)| |!(Y实例对象)){
返回false;
}

它们必须具有完全相同的原型链,我们可以找到最接近的原型链。
测试构造函数。
如果(x.constructor!= y.constructor){
返回false;
}

对于(x中的var){
/ /继承的属性是使用x.constructor = y.constructor测试
如果(x.hasownproperty(P)){
当设置为未定义}时,比较
如果(!y.hasownproperty(P)){
返回false;
}

如果它们具有相同的严格值值或标识,那么它们是相等的。
如果(x { P = { } })
继续;
}

字符串函数 / /数字、布尔值、必须严格相等
如果(typeof(x { p)!=对象){
返回false;
}

对象和数组必须递归地进行测试
如果(!Object.equals(x { } { } Y P,P)){
返回false;
}
}
}

对于(在y中){
允许设置为未定义的
如果(y.hasownproperty(P)!x.hasownproperty(P)){
返回false;
}
}
返回true;
};


使用uff1a


obja = {
答:'123,
B:'456
};
objb = {
答:'123,
B:万
};
无功相等= CMP(obja,objb);
console.log(相等); / /假是不一样的


希望本文能对大家的javascript程序设计有所帮助。