深度判断两个对象是否一样
/**
* 深度判断两个对象是否一样
* @param {Object} object1 对象1
* @param {Object} object2 对象2
*/
const deepEqualObject = (object1 = {}, object2 = {}) => {
// 如果两个对象引用相同,则返回 true
if (object1 === object2) return true;
// 如果两个对象中至少有一个不是对象,则返回 false
if (typeof object1 !== 'object' || typeof object2 !== 'object') return false;
// 获取两个对象的所有属性名
const keys1 = Object.keys(object1);
const keys2 = Object.keys(object2);
// 如果两个对象的属性数量不相同,则返回 false
if (keys1.length !== keys2.length) return false;
// 递归比较两个对象的每个属性值
// 如果 obj2 不包含 obj1 的某个属性,或者属性值不相等,则返回 false
for (let key of keys1) if (!object2.hasOwnProperty(key) || !deepEqualObject(object1[key], object2[key])) return false;
// 如果所有属性值都相同,则返回 true
return true;
}
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
CaptainTwo!
喜欢就支持一下吧