22 lines
		
	
	
		
			642 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			22 lines
		
	
	
		
			642 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
export const deepEqual = (object1: any, object2: any) => {
 | 
						|
  if (!isObject(object1) || !isObject(object2)) return object1 === object2
 | 
						|
 | 
						|
  const keys1 = Object.keys(object1)
 | 
						|
  const keys2 = Object.keys(object2)
 | 
						|
  if (keys1.length !== keys2.length) {
 | 
						|
    return false
 | 
						|
  }
 | 
						|
  for (const key of keys1) {
 | 
						|
    const val1 = object1[key]
 | 
						|
    const val2 = object2[key]
 | 
						|
    const areObjects = isObject(val1) && isObject(val2)
 | 
						|
    if ((areObjects && !deepEqual(val1, val2)) || (!areObjects && val1 !== val2)) {
 | 
						|
      return false
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return true
 | 
						|
}
 | 
						|
export const isObject = (object: any) => {
 | 
						|
  return object != null && typeof object === 'object'
 | 
						|
}
 |