// 深度比较
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...