Home / Function/ looseEqual() — vue Function Reference

looseEqual() — vue Function Reference

Architecture documentation for the looseEqual() function in util.ts from the vue codebase.

Entity Profile

Dependency Diagram

graph TD
  65ecf248_3144_6fe6_6b3c_e026bf041584["looseEqual()"]
  95dd9b42_a5f3_42b6_a271_71cac3934772["model()"]
  95dd9b42_a5f3_42b6_a271_71cac3934772 -->|calls| 65ecf248_3144_6fe6_6b3c_e026bf041584
  f680b438_de45_c1ec_3060_a99542a52731["actuallySetSelected()"]
  f680b438_de45_c1ec_3060_a99542a52731 -->|calls| 65ecf248_3144_6fe6_6b3c_e026bf041584
  95f25cd9_aa67_97cd_0b32_972cc8e1ae6e["hasNoMatchingOption()"]
  95f25cd9_aa67_97cd_0b32_972cc8e1ae6e -->|calls| 65ecf248_3144_6fe6_6b3c_e026bf041584
  1dafb5a9_b144_8425_a384_6a574c550a19["directive.componentUpdated()"]
  1dafb5a9_b144_8425_a384_6a574c550a19 -->|calls| 65ecf248_3144_6fe6_6b3c_e026bf041584
  2b704f63_1e61_0631_3906_d1b4f81c276c["looseIndexOf()"]
  2b704f63_1e61_0631_3906_d1b4f81c276c -->|calls| 65ecf248_3144_6fe6_6b3c_e026bf041584
  1f0e6b8d_8dbc_03c4_5728_ec6fdb01be94["updateSelect()"]
  1f0e6b8d_8dbc_03c4_5728_ec6fdb01be94 -->|calls| 65ecf248_3144_6fe6_6b3c_e026bf041584
  2d184c1f_e247_ef28_44f9_122886cfd2a5["isObject()"]
  65ecf248_3144_6fe6_6b3c_e026bf041584 -->|calls| 2d184c1f_e247_ef28_44f9_122886cfd2a5
  style 65ecf248_3144_6fe6_6b3c_e026bf041584 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

src/shared/util.ts lines 305–344

export function looseEqual(a: any, b: any): boolean {
  if (a === b) return true
  const isObjectA = isObject(a)
  const isObjectB = isObject(b)
  if (isObjectA && isObjectB) {
    try {
      const isArrayA = Array.isArray(a)
      const isArrayB = Array.isArray(b)
      if (isArrayA && isArrayB) {
        return (
          a.length === b.length &&
          a.every((e: any, i: any) => {
            return looseEqual(e, b[i])
          })
        )
      } else if (a instanceof Date && b instanceof Date) {
        return a.getTime() === b.getTime()
      } else if (!isArrayA && !isArrayB) {
        const keysA = Object.keys(a)
        const keysB = Object.keys(b)
        return (
          keysA.length === keysB.length &&
          keysA.every(key => {
            return looseEqual(a[key], b[key])
          })
        )
      } else {
        /* istanbul ignore next */
        return false
      }
    } catch (e: any) {
      /* istanbul ignore next */
      return false
    }
  } else if (!isObjectA && !isObjectB) {
    return String(a) === String(b)
  } else {
    return false
  }
}

Subdomains

Calls

Frequently Asked Questions

What does looseEqual() do?
looseEqual() is a function in the vue codebase.
What does looseEqual() call?
looseEqual() calls 1 function(s): isObject.
What calls looseEqual()?
looseEqual() is called by 6 function(s): actuallySetSelected, directive.componentUpdated, hasNoMatchingOption, looseIndexOf, model, updateSelect.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free