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
      }
    

      

  • 相关阅读:
    transform.forward和vector3.forward
    游戏开发数值公式
    类的大小
    c#扩展方法
    C# 线程本地存储 调用上下文 逻辑调用上下文
    DbCommandInterceptor抓取EF执行时的SQL语句
    C# 关键字const与readonly的区别
    Swagger(webapi自动生成接口说明文档)
    log4net配置
    JavaScript代码优化指南
  • 原文地址:https://www.cnblogs.com/peter-web/p/15044728.html
Copyright © 2011-2022 走看看