zoukankan      html  css  js  c++  java
  • js 判断两个对象是否相同

    // 检查两个值是否大致相等,包含对象的对比
    function looseEqual (a, b) {
        if (a === b) { return true }
        var isObjectA = isObject(a);
        var isObjectB = isObject(b);
        if (isObjectA && isObjectB) {
          try {
            var isArrayA = Array.isArray(a);
            var isArrayB = Array.isArray(b);
            if (isArrayA && isArrayB) {
              return a.length === b.length && a.every(function (e, i) {
                return looseEqual(e, b[i])
              })
            } else if (a instanceof Date && b instanceof Date) {
              return a.getTime() === b.getTime()
            } else if (!isArrayA && !isArrayB) {
              var keysA = Object.keys(a);
              var keysB = Object.keys(b);
              return keysA.length === keysB.length && keysA.every(function (key) {
                return looseEqual(a[key], b[key])
              })
            } else {
              /* istanbul ignore next */
              return false
            }
          } catch (e) {
            /* istanbul ignore next */
            return false
          }
        } else if (!isObjectA && !isObjectB) {
          return String(a) === String(b)
        } else {
          return false
        }
      }
    
    // 返回可以在数组中找到大致相等值的第一个索引(如果 value 是普通对象,则数组必须包含相同形状的对象),如果不存在,则返回 -1。
    function looseIndexOf (arr, val) {
        for (var i = 0; i < arr.length; i++) {
          if (looseEqual(arr[i], val)) { return i }
        }
        return -1
      }
    

      

  • 相关阅读:
    20201216-1 文件读与写详解3
    20201214-4 文件读与写详解2
    20201214-3 文件读与写详解1
    20201214 集合及其运算
    3月17日:毕业设计计划
    3月16日:毕业设计计划
    3月15日:毕业设计计划
    3月14日:毕业设计计划
    3月13日:毕业设计计划
    3月12日:毕业设计计划
  • 原文地址:https://www.cnblogs.com/peter-web/p/15044728.html
Copyright © 2011-2022 走看看