前言
对象是引用类型数据,变量中存储的是其在堆中的内存地址,所以当两个对象进行 == 和 === 运算时,会对比其堆中的地址,而非两个对象的值。
下面提供几种可以判断对象值是否相等的方法。
方法一:
JSON.stringify(obj1) === JSON.stringify(obj2)
方法二:
function isObjectEqual(obj1, obj2) {
const obj1Keys = Object.keys(obj1);
const obj2Keys = Object.keys(obj2);
if (obj1Keys.length !== obj2Keys.length) {
return false;
}
for (let key of obj1Keys) {
if (obj1[key] !== obj2[key]) {
return false;
}
}
return true;
}