博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
es6 下比较对象是否有修改的简要方法
阅读量:6348 次
发布时间:2019-06-22

本文共 1564 字,大约阅读时间需要 5 分钟。

/** * 用于递归判断两个对象是否一致,以区分是否修改 * @param {*} oldObj  * @param {*} newObj  * 返回false:不相等 */export function objsDiffer(oldObj, newObj){  let aProps = Object.getOwnPropertyNames(oldObj);  let bProps = Object.getOwnPropertyNames(newObj);  if (aProps.length != bProps.length) {      return false;  }  //return 时for中断  for (var i = 0; i < aProps.length; i++) {      let propName = aProps[i];      let propA = oldObj[propName];      let propB = newObj[propName];      if (propA == propB) {        if (  propA instanceof Object ) {          if (!objsDiffer(propA, propB)) {            return false          }        } else if ( propA instanceof Array && propB instanceof Array ) {          if( propA.length != propB.length ){            return false          }          let tem = arrDiffer(propA, propB)          if(!tem) return false;        }      } else {        return false      }  }  return true;}/** * 返回false 表示不相等 */export function arrDiffer(oldObj, newObj){  for (var i = 0; i < oldObj.length; i++) {      let propA = oldObj[propName];      let propB = newObj[propName];      if (propA == propB) {        if ( propA instanceof Object) {          if (!objsDiffer(propA, propB)) {            return false          }        } else if ( propA instanceof Array && propB instanceof Array ) {          if( propA.length != propB.length ){            return false          }          let temp =  arrDiffer(propA, propB)          if(!temp) return false        }      } else {        return false      }  }  return true}复制代码

转载于:https://juejin.im/post/5cf4cc6ae51d454f723024b3

你可能感兴趣的文章
WebSocket跨域问题解决
查看>>
ECMAScript6基本介绍
查看>>
世界经济论坛发布关于区块链网络安全的报告
查看>>
巨杉数据库加入CNCF云原生应用计算基金会,共建开源技术生态
查看>>
Ubuntu 16.04安装Nginx
查看>>
从 JS 编译原理到作用域(链)及闭包
查看>>
flutter 教程(一)flutter介绍
查看>>
CSS面试题目及答案
查看>>
【从蛋壳到满天飞】JS 数据结构解析和算法实现-Arrays(数组)
查看>>
每周记录(三)
查看>>
Spring自定义注解从入门到精通
查看>>
笔记本触摸板滑动事件导致连滑的解决方式
查看>>
Runtime 学习:消息传递
查看>>
你了解BFC吗?
查看>>
linux ssh tunnel使用
查看>>
十、详解FFplay音视频同步
查看>>
自定义元素探秘及构建可复用组件最佳实践
查看>>
小猿圈Python教程之全面解析@property的使用
查看>>
mpvue开发小程序所遇问题及h5转化方案
查看>>
View和Activity的生命周期
查看>>