Newer
Older
CVSS_3.0_GUI / node_modules / nwjs-builder-phoenix / node_modules / request / node_modules / har-validator / node_modules / ajv / node_modules / fast-deep-equal / index.js
root on 7 May 2019 1 KB Initial commit
  1. 'use strict';
  2.  
  3. var isArray = Array.isArray;
  4. var keyList = Object.keys;
  5. var hasProp = Object.prototype.hasOwnProperty;
  6.  
  7. module.exports = function equal(a, b) {
  8. if (a === b) return true;
  9.  
  10. var arrA = isArray(a)
  11. , arrB = isArray(b)
  12. , i
  13. , length
  14. , key;
  15.  
  16. if (arrA && arrB) {
  17. length = a.length;
  18. if (length != b.length) return false;
  19. for (i = 0; i < length; i++)
  20. if (!equal(a[i], b[i])) return false;
  21. return true;
  22. }
  23.  
  24. if (arrA != arrB) return false;
  25.  
  26. var dateA = a instanceof Date
  27. , dateB = b instanceof Date;
  28. if (dateA != dateB) return false;
  29. if (dateA && dateB) return a.getTime() == b.getTime();
  30.  
  31. var regexpA = a instanceof RegExp
  32. , regexpB = b instanceof RegExp;
  33. if (regexpA != regexpB) return false;
  34. if (regexpA && regexpB) return a.toString() == b.toString();
  35.  
  36. if (a instanceof Object && b instanceof Object) {
  37. var keys = keyList(a);
  38. length = keys.length;
  39.  
  40. if (length !== keyList(b).length)
  41. return false;
  42.  
  43. for (i = 0; i < length; i++)
  44. if (!hasProp.call(b, keys[i])) return false;
  45.  
  46. for (i = 0; i < length; i++) {
  47. key = keys[i];
  48. if (!equal(a[key], b[key])) return false;
  49. }
  50.  
  51. return true;
  52. }
  53.  
  54. return false;
  55. };
Buy Me A Coffee