38 lines
		
	
	
		
			768 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			38 lines
		
	
	
		
			768 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | // original sourc
 | ||
|  | // https://github.com/rackt/react-redux/blob/master/src/utils/shallowEqual.js
 | ||
|  | // MIT license
 | ||
|  | export default function shallowEqual(objA, objB) { | ||
|  |   if (objA === objB) { | ||
|  |     return true; | ||
|  |   } | ||
|  | 
 | ||
|  |   if ( | ||
|  |     typeof objA !== 'object' || | ||
|  |     objA === null || | ||
|  |     typeof objB !== 'object' || | ||
|  |     objB === null | ||
|  |   ) { | ||
|  |     return false; | ||
|  |   } | ||
|  | 
 | ||
|  |   var keysA = Object.keys(objA); | ||
|  |   var keysB = Object.keys(objB); | ||
|  | 
 | ||
|  |   if (keysA.length !== keysB.length) { | ||
|  |     return false; | ||
|  |   } | ||
|  | 
 | ||
|  |   // Test for A's keys different from B.
 | ||
|  |   var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); | ||
|  |   for (var i = 0; i < keysA.length; i++) { | ||
|  |     if ( | ||
|  |       !bHasOwnProperty(keysA[i]) || | ||
|  |       objA[keysA[i]] !== objB[keysA[i]] | ||
|  |     ) { | ||
|  |       return false; | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   return true; | ||
|  | } |