实现一个深度比较

Posted 悠悠洛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现一个深度比较相关的知识,希望对你有一定的参考价值。

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);
}

以上是关于实现一个深度比较的主要内容,如果未能解决你的问题,请参考以下文章

分享 :深度学习框架比较,我该选择哪一个?

原创 | 深度学习框架比较,我该选择哪一个?

深度剖析:如何实现一个 Virtual DOM 算法 #13

深度学习并行运算原理 以及 keras实现GPU并行

学习深度解析中文分词器算法(最大正向/逆向匹配)

数据结构——二叉树 前序中序后序层次遍历及非递归实现 查找统计个数比较求深度的递归实现(转)