如何深入比较两个对象是否相等
话不多说直接上代码,另外不考虑是函数的情况
/** * 判断是否是对象 * @param { object } obj */ function isObj(obj){ return typeof obj === 'object' && obj!== null } /** * 深入比较 * @param { object } obj1 * @param { object } obj2 */ function isEqual(obj1,obj2){ //如果不是对象直接对比返回 if(!isObj(obj1) || !isObj(obj2)){ //值类型比较 return obj1 === obj2 } //如果两个对象一样相等则返回true if(obj1 === obj2) { return true } const obj1Keys = Object.keys(obj1) const obj2Keys = Object.keys(obj2) //遍历obj1 for(let key in obj1) { const res = isEqual(obj1[key], obj2[key]) if(!res) return false } //以上情况都不是就是全相等 return true }