zoukankan      html  css  js  c++  java
  • 实现一个深度比较

    function compare(a, b) {
      const typeA = {}.toString.call(a);
      const typeB = {}.toString.call(b);
      if (typeA !== typeB) return false;
      let result = false;
      switch (typeA) {
        case '[object Undefined]':
        case '[object Null]':
          result = true;
          break;
        case '[object String]':
        case '[object Number]':
          if (a === b) result = true;
          break;
        case '[object Array]':
          if (a.length === b.length) {
            result = a.every(aitem => b.some(bitem => compare(aitem, bitem)));
          }
          break;
        case '[object Object]':
          const keysA = Object.keys(a);
          const keysB = Object.keys(b);
          if (keysA.length === keysB.length) {
            result = keysA.every((key) => {
              if (b.hasOwnProperty(key)) {
                return compare(a[key], b[key]);
              }
              return false;
            });
          }
          break;
      }

      return result;
    }

    export default function deepCompare(a, b) {
      return compare(a, b);
    }
  • 相关阅读:
    5-JVM常用的命令
    4-JVM 参数
    3-JVM垃圾回收算法和垃圾收集器
    2-JVM内存结构
    1-JVM基础
    非常短的git学习笔记
    白话马尔科夫链蒙特卡罗方法(MCMC)
    写了个小游戏,来玩
    胡小兔的 高考2019 游记
    机房志 | 一篇中二的文章
  • 原文地址:https://www.cnblogs.com/youyouluo/p/11971377.html
Copyright © 2011-2022 走看看