全相等函数

手写全相等函数isEqual

// 判断obj是否为对象
function isObject(obj) {
  return (typeof obj === 'object' && obj !== null);
}
//全相等函数
function isEqual(obj1,obj2) {
  //如果其中一个不为对象,则判断两个是否严格相等
  if (!isObject(obj1) || !isObject(obj2)) {
    return obj1 === obj2;
  }
  // 到了这里说明两个都是对象
  // 先判断引用是否相等
  if (obj1 === obj2) {
    return true;
  }
  
  //判断两个对象中的键的个数是否相同
  if (Object.keys(obj1).length !== Object.keys(obj2).length) {
    return false;
  }
  // 以obj1 为基准, 递归判断obj1和obj2中的元素是否相等
  for (let key in obj1) {
    const res = isEqual(obj1[key],obj2[key]);
    if (!res) {
      return false;
    }
  }
  // 全相等
  return true;
}

测试数据

const obj1 = {
            a: 100,
            b: 'shit',
            color: ['red', 'green'],
            location: {
                city: 'BJ',
                region: "CHINA"
            }
        };

const obj2 = {
            a: 100,
            b: 'shit',
            color: ['red', 'green'],
            location: {
                city: 'BJ',
                region: "CHINA"
            }
        };
console.log(isEqual(obj1,obj2)); // true

慢慢来,比较快!基础要牢,根基要稳!向大佬致敬!
原文地址:https://www.cnblogs.com/rookie123/p/14234416.html