1、比较两个对象是否相等
通过遍历对象的键值进行比较 ```javascript function isObjectValueEqual(a, b) { // 判断两个对象是否指向同一内存,指向同一内存返回 true if (a === b) return true // 获取两个对象键值数组 let aProps = Object.getOwnPropertyNames(a) let bProps = Object.getOwnPropertyNames(b) if (aProps.length !== bProps.length) return false // 遍历对象的键值 for (let prop in a) {
// 判断 a 的键值,在 b 中是否存在,不存在,返回 false
if (b.hasOwnProperty(prop)) {
// 判断 a 的键值是否为对象,是则递归,不是对象直接判断键值是否相等,不相等返回 false
if (typeof a[prop] === 'object') {
if (!isObjectValueEqual(a[prop], b[prop])) return false
} else if (a[prop] !== b[prop]) {
return false
}
} else {
return false
}
} return true }
let obj1 = { a: 1, b: { c: 2 } } let obj2 = { b: { c: 3 }, a: 1 } console.log(isObjectValueEqual(obj1, obj2)) // false
```
- 利用 lodash 的 isEqual 方法。