JS深层比较两个数组或者对象的方法
时间: 2023-10-09 09:16:29 浏览: 262
在 JavaScript 中,深层比较两个数组或对象可以使用递归和循环来实现。以下是一种常见的深层比较方法:
1. 递归比较对象或数组:
```
function deepEqual(obj1, obj2) {
// 检查类型是否相同
if (typeof obj1 !== typeof obj2) {
return false;
}
// 递归比较对象
if (typeof obj1 === "object" && obj1 !== null && 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 (!deepEqual(obj1[key], obj2[key])) {
return false;
}
}
return true;
}
// 比较基本类型和函数
return obj1 === obj2;
}
```
使用该方法,你可以比较两个对象或数组是否深度相等。它会递归地比较对象的属性或数组的元素。
示例用法:
```
const obj1 = { name: "John", age: 25, address: { city: "New York", country: "USA" } };
const obj2 = { name: "John", age: 25, address: { city: "New York", country: "USA" } };
console.log(deepEqual(obj1, obj2)); // 输出 true
```
该方法会递归比较对象的属性,直到比较完所有的属性或找到不相等的属性。如果所有的属性都相等,它会返回 true,否则返回 false。
阅读全文