【JavaScript相关】怎么判断两个对象相等?(约195字)

怎么判断两个对象相等?

    obj={
        a:1,
        b:2
    }
    obj2={
        a:1,
        b:2
    }
    obj3={
        a:1,
        b:'2'
    }
  1. 使用JSON.stringify():将对象转换为字符串,然后进行比较。这种方式适用于对象中的属性值都是基本数据类型,并且属性的顺序对比较结果无影响。
    JSON.stringify(obj) === JSON.stringify(obj2); // true
    JSON.stringify(obj) === JSON.stringify(obj3); // false
  1. 使用循环遍历 :逐个比较对象的属性值。这种方式适用于对象中的属性值类型复杂,包括嵌套对象或数组。
    function deepEqual(obj1, obj2) {
      // 比较基本数据类型的值
      if (obj1 === obj2) {
        return true;
      }
    
      // 比较对象的属性个数
      if (Object.keys(obj1).length !== Object.keys(obj2).length) {
        return false;
      }
    
      // 逐个比较对象的属性值
      for (let key in obj1) {
        if (!obj2.hasOwnProperty(key) || !deepEqual(obj1[key], obj2[key])) {
          return false;
        }
      }
    
      return true;
    }
    
    deepEqual(obj, obj2); // true
    deepEqual(obj, obj3); // false
  1. 使用lodash库的isEqual()方法lodash是一个流行的 JavaScript 工具库,其中的isEqual()方法可以比较两个对象是否相等,包括深度比较。

首先,需要通过npm install lodash命令安装lodash库,然后在代码中引入isEqual()方法:

    const _ = require('lodash');
    
    _.isEqual(obj, obj2); // true
    _.isEqual(obj, obj3); // false

THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容