zoukankan      html  css  js  c++  java
  • 判断对象是否相等

    判断值是否相等:===

    ES6判断值或者对象指向的地址是否相同:

    let obj1 = obj2
    Object.is(obj1,obj2)  //true

    判断对象内容是否相等:

    lodash.js

    _.isEquel(obj1,obj2)
    

    原生js

    let obj1 = {
        a: 1,
        b: {
          c: 2
        }
      }
      let obj2 = {
        b: {
          c: 3
        },
        a: 1
      }
      function isObjectValueEqual(a, b) {
        // 判断两个对象是否指向同一内存,指向同一内存返回true
        if (a === b) return true
        // 获取两个对象键值数组
        let aProps = Object.getOwnPropertyNames(a)
        let bProps = Object.getOwnPropertyNames(b)
        // 判断两个对象键值数组长度是否一致,不一致返回false
        if (aProps.length !== bProps.length) return false
        // 遍历对象的键值
        for (let prop in a) {
          // 判断a的键值,在b中是否存在,不存在,返回false
          if (b.hasOwnProperty(prop)) {
            // 判断a的键值是否为对象,是则递归,不是对象直接判断键值是否相等,不相等返回false
            if (typeof a[prop] === 'object') {
              if (!isObjectValueEqual(a[prop], b[prop])) return false
            } else if (a[prop] !== b[prop]) {
              return false
            }
          } else {
            return false
          }
        }
        return true
      }
      console.log(isObjectValueEqual(obj1, obj2))  // false
    

      

  • 相关阅读:
    sql 修改字段小记
    (转)web.config 为某个单独页面设置编码格式
    gb2312编码提交url乱码解决
    Windows 8上强制Visual Studio以管理员身份运行
    new、delete用法(一)
    把varchar转换为int 然后进行排序
    linq 整体修改字段
    游标用法
    分组并赋值
    读取xml
  • 原文地址:https://www.cnblogs.com/ihuangqing/p/12643317.html
Copyright © 2011-2022 走看看