// 深度比较
const obj1 = {
a: 100,
b: {
x: 10,
y: 20
}
}
const obj2 = {
a: 100,
b: {
x: 10,
y: 20
}
}
console.log(obj1 === obj2) // 直接比较是false
console.log(isEqual(obj1,obj2)) // true
function isEqual(obj1,obj2) {
// 先判断是否是对象或者数组,不是的话直接进行比较
if (!isObject(obj1) || !isObject(obj2)) {
return obj1 === obj2
}
// 是对象或者数组,比较长度是否相同,不相同直接返回false
const obj1keys = Object.keys(obj1);
const obj2keys = Object.keys(obj2);
if (obj1keys.length !== obj2keys.length) {
return false;
}
// 比较是否全相等,for in 适用于对象和数组
for (let key in obj1) {
// 递归来比较是否完全相等
const res = isEqual(obj1[key],obj2[key])
// 某一次不相等就返回false,不用再比较
if (!res) {
return false;
}
}
// 全相等返回true
return true;
}
function isObject(obj) {
return typeof obj === 'object' && obj !== null
}
手写深度比较isEqual
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 注意:这里使用的是Pytorch,没有安装将无法使用本方法 废话不多说,上代码: 由于设备差异,图片存储速度也将有...
- 上一讲笔者和大家一起学习了如何使用 Tensorflow 构建一个卷积神经网络模型。本节我们将继续利用 Tens...