javascript 递归对比对象
时间: 2023-08-18 16:07:24 浏览: 53
在 JavaScript 中,可以使用递归来对比两个对象。下面是一个示例代码,它可以递归地比较两个对象是否相等:
```javascript
function deepEqual(obj1, obj2) {
// 检查类型
if (typeof obj1 !== 'object' || typeof obj2 !== 'object' || obj1 === null || obj2 === null) {
return obj1 === obj2; // 如果是基本类型或者其中一个为 null,则直接比较值
}
// 比较属性个数
const keys1 = Object.keys(obj1);
const keys2 = Object.keys(obj2);
if (keys1.length !== keys2.length) {
return false;
}
// 比较每个属性
for (let key of keys1) {
if (!keys2.includes(key) || !deepEqual(obj1[key], obj2[key])) {
return false;
}
}
return true;
}
// 示例用法
const obj1 = { foo: { bar: 'baz' }, num: 42 };
const obj2 = { foo: { bar: 'baz' }, num: 42 };
console.log(deepEqual(obj1, obj2)); // 输出: true
```
这段代码定义了一个 `deepEqual` 函数,它会递归地比较两个对象的属性是否相等。首先,它会检查对象的类型,如果是基本类型或者其中一个为 null,则直接比较值。然后,它会比较两个对象的属性个数,如果不相等,则返回 false。最后,它会逐个比较每个属性,如果有任何一个属性不相等,则返回 false。如果所有属性都相等,则返回 true。
在示例中,`obj1` 和 `obj2` 是两个具有相同属性的对象,它们的属性值也相等,因此 `deepEqual(obj1, obj2)` 返回 true。你可以尝试修改 `obj2` 的属性值或者添加新的属性,然后再次运行代码,观察输出结果。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)