zoukankan      html  css  js  c++  java
  • 比较两个array或者object是否深度相等

    function objectEquals(object1: Object, object2: Object): boolean {
      for (let propName in object1) {
        if (object1.hasOwnProperty(propName) != object2.hasOwnProperty(propName)) {
          return false
        } else if (typeof object1[propName] != typeof object2[propName]) {
          return false
        }
      }
      for (let propName in object2) {
        if (object1.hasOwnProperty(propName) != object2.hasOwnProperty(propName)) {
          return false
        } else if (typeof object1[propName] != typeof object2[propName]) {
          return false
        }
        if (!object1.hasOwnProperty(propName)) {
        continue
      }
      if (object1[propName] instanceof Array && object2[propName] instanceof Array) {
        if (!arrayEquals(object1[propName], object2[propName])) {
          return false
        }
       } else if (object1[propName] instanceof Object && object2[propName] instanceof Object) {
        if (!objectEquals(object1[propName], object2[propName])) {
          return false
        }
       } else if (object1[propName] != object2[propName]) {
        return false
        }
      }
      return true
    }
     
    
    function arrayEquals(array1, array2): boolean {
      if (!array1 && !array2) {
        return true
      }
      if (!array1 && array2 || array1 && !array2) {
        return false
      }
      if (array1.length != array2.length) {
        return false
      }
      for (let i = 0, l = array1.length; i < l; i++) {
        if (array1[i] instanceof Array && array2[i] instanceof Array) {
          if (!arrayEquals(array1[i], array2[i]))
            return false
        } else if (array1[i] instanceof Object && array2[i] instanceof Object) {
          if (!objectEquals(array1[i], array2[i]))
            return false
        } else if (array1[i] != array2[i]) {
          return false
        }
      }
      return true
    }
  • 相关阅读:
    分布式锁原理及实现方式
    【FAQ】Maven 本地仓库明明有jar包,pom文件还是报错解决办法
    【FAQ】tomcat启动jdk版本不一致
    【Map,HashMap,Vector,List】资料汇总
    【FAQ】调用接口序列化问题
    【docker】docker下安装mysql
    linux tcpdump抓包Post请求
    Springboot 在@Configuration注解的勒种 使用@Autowired或者@value注解 读取.yml属性失败
    Springboot使用Shiro-整合Redis作为缓存 解决定时刷新问题
    CentOS yum 安装nginx
  • 原文地址:https://www.cnblogs.com/brainworld/p/8662253.html
Copyright © 2011-2022 走看看