当前位置:网站首页>深度比较两个对象是否相同
深度比较两个对象是否相同
2022-08-01 05:21:00 【時間不夠以後】
/** * 深度比较两个对象是否相同 * @param {Object} oldData * @param {Object} newData */
export const equals2Obj = (oldData, newData) => {
// 类型为基本类型时,如果相同,则返回true
if (oldData === newData) return true
if (isObject(oldData) && isObject(newData) && Object.keys(oldData).length === Object.keys(newData).length) {
// 类型为对象并且元素个数相同
// 遍历所有对象中所有属性,判断元素是否相同
for (const key in oldData) {
if (Object.prototype.hasOwnProperty.call(oldData, key)) {
if (!equals2Obj(oldData[key], newData[key])) {
// 对象中具有不相同属性 返回false
return false
}
}
}
} else if (isArray(oldData) && isArray(newData) && oldData.length === newData.length) {
// 类型为数组并且数组长度相同
for (let i = 0, length = oldData.length; i < length; i++) {
if (!equals2Obj(oldData[i], newData[i])) {
// 如果数组元素中具有不相同元素,返回false
return false
}
}
} else {
// 其它类型,均返回false
return false
}
// 走到这里,说明数组或者对象中所有元素都相同,返回true
return true
}
边栏推荐
猜你喜欢

关于给Qt做一个软件初始化的进度条

WPF项目-初步了解数据绑定 binding

MySQL-Data Operation-Group Query-Join Query-Subquery-Pagination Query-Joint Query

华为Android开发面试后得出的面试秘诀

WPF入门项目必知必会-初步了解数据绑定 binding

(2022 Nioke Duo School IV) D-Jobs (Easy Version) (3D prefix or)

pytorch、tensorflow对比学习—计算图和微分机制

Robot growth in China

小心你的字典和样板代码

混合型界面:对话式UI的未来
随机推荐
JWL-11/2-99.9A电流继电器
状态压缩dp
第6章——数据库的安全性
Selenium: element judgment
The solution to the inconsistency between the PaddleX deployment inference model and the GUI interface test results
Selenium: Popup Handling
程序员代码面试指南 CD15 生成窗口最大值数组
解决浏览器滚动条导致的页面闪烁问题
ApiFile
力扣(LeetCode)212. 单词搜索 II(2022.07.31)
PAT class B 1001 (3n+1) conjecture
微信小程序用户登录auth.code2Session接口开发
vsce package 后出现 Command failed: npm list --production --parseable --depth=99999 --loglevel=error异常
Selenium: upload and download files
pytorch、tensorflow对比学习—计算图和微分机制
Selenium: Element wait
Selenium:弹窗处理
导致锁表的原因及解决方法
2022.7.26 Mock Competition
WPF项目-按着键盘方向键,移动格子盒子效果