<!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>
07-21
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交