手写深度比较 笔记

```html
<!DOCTYPE html>
<html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <SCRIPT> // 判断是否 是对象或数组 let isObject = (obj) => { return typeof obj === 'object' && obj !== null } // 全相等 let isEqual = (obj1, obj2) => { if (!isObject(obj1) || !isObject(obj2)) { // 值类型 (注意 参与 equal 的一般不是函数 ) return obj1 === obj2 } // 传入两个相同的值 if (obj1 === obj2) { return true } // 两个都是对象或数组的,且不相等 // 1、先取出obj1和obj2的key 比较个数 const obj1Keys = Object.keys(obj1) const obj2Keys = Object.keys(obj2) if (obj1Keys.length !== obj2Keys.length) { return false } // 2、以 obj1 为基准 和obj2 递归比较 for (let key in obj1) { // 比较当前key的value --递归 const res = isEqual(obj1[key], obj2[key]) if (!res) { return false } } // 全相等 return true } // 测试 const obj1 = { a: 1, b: 2, c: { x: 100, y: 200 } } const obj2 = { a: 1, b: 2, c: { x: 100, y: 20 } } console.log(isEqual(obj1, obj2)); </SCRIPT> </body> </html>
```
posted @ 2021-02-19 11:32  Muliminty  阅读(37)  评论(0)    收藏  举报