欢迎观看本博客
您好! 这是我编程上遇到的困惑,现在记录下来。如有疏漏与不足之处还请多多指教。
题目详情
在实际开发中,我们常常遇到判断两个对象的内容是否相同,或者当前对象内容是否有改变。
实例:
var demoA = {
name:2,
c:{
age:3
}
};
var demoB = {
name:2,
c:{
age:3
}
}
内容比较方法:
function isObjectValueEqual(a, b) {
let aProps = Object.getOwnPropertyNames(a);
let bProps = Object.getOwnPropertyNames(b);
if (aProps.length !== bProps.length)
return false;
for (var i = 0; i < aProps.length; i++) {
let propName = aProps[i];
let propA = a[propName];
let propB = b[propName];
if ((typeof (propA) === ‘object’)) {
return isObjectValueEqual(propA, propB);
}else{
if (propA !== propB)
return false;
}
}
return true;
}
总结:
方法比较简单转化数组,判断长度,进行递归遍历。
如果理解有困难,建议用debug追踪一下,就好了。
寄语:
书读百遍,
其义自见。
——晋·陈寿 《三国志·魏志·董遇传》