加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
38-实现深度比较isEqual.html 1.20 KB
一键复制 编辑 原始数据 按行查看 历史
wangcai 提交于 2023-04-04 16:49 . xx‘
<script>
// 是不是对象
function isObject(obj) {
return typeof obj === "object" && obj !== null;
}
// 深度比较
function isEqual(obj1, obj2) {
if (!isObject(obj1) || !isObject(obj2)) {
// 说明其中有一个数据是基本数据类型
return obj1 === obj2
}
// 两个都是对象或数组,比较key的个数是否相同
let obj1Keys = Object.keys(obj1)
let obj2Keys = Object.keys(obj2)
if (obj1Keys.length !== obj2Keys.length) {
return false;
}
// 两个对象或数组中的key的个数是一样的
// 以其中一个为基准,遍历,递归比较
for (let key in obj1) {
// console.log(obj1[key]);
let res = isEqual(obj1[key], obj2[key])
if (!res) {
return false;
}
}
// 全相等
return true;
}
let obj1 = {
a: 1,
b: 2,
c: {
d: "d",
e: 'e'
}
}
let obj2 = {
a: 1,
b: 2,
c: {
d: "d",
e: 'e'
}
}
console.log(isEqual(obj1, obj2)); // true
</script>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化