MCPcopy Create free account
hub / github.com/formkit/formkit / eq

Function eq

packages/utils/src/index.ts:117–144  ·  view source on GitHub ↗
(
  valA: any, // eslint-disable-line
  valB: any, // eslint-disable-line
  deep = true,
  explicit: string[] = ['__key']
)

Source from the content-addressed store, hash-verified

115 * @public
116 */
117export function eq(
118 valA: any, // eslint-disable-line
119 valB: any, // eslint-disable-line
120 deep = true,
121 explicit: string[] = ['__key']
122): boolean {
123 if (valA === valB) return true
124 if (typeof valB === 'object' && typeof valA === 'object') {
125 if (valA instanceof Map) return false
126 if (valA instanceof Set) return false
127 if (valA instanceof Date && valB instanceof Date)
128 return valA.getTime() === valB.getTime()
129 if (valA instanceof RegExp && valB instanceof RegExp)
130 return eqRegExp(valA, valB)
131 if (valA === null || valB === null) return false
132 if (Object.keys(valA).length !== Object.keys(valB).length) return false
133 for (const k of explicit) {
134 if ((k in valA || k in valB) && valA[k] !== valB[k]) return false
135 }
136 for (const key in valA) {
137 if (!(key in valB)) return false
138 if (valA[key] !== valB[key] && !deep) return false
139 if (deep && !eq(valA[key], valB[key], deep, explicit)) return false
140 }
141 return true
142 }
143 return false
144}
145
146/**
147 * A regular expression to test for a valid date string.

Callers 14

reactBindingsFunction · 0.90
safeEqualFunction · 0.90
useInputFunction · 0.90
utils.spec.tsFile · 0.90
inputFunction · 0.90
hydrateFunction · 0.90
setFunction · 0.90
rebootFunction · 0.90
isFunction · 0.90
notFunction · 0.90
containsValueFunction · 0.90
shouldSelectFunction · 0.90

Calls 1

eqRegExpFunction · 0.85

Tested by

no test coverage detected