is-equal.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var is_object_like_1 = require("./is-object-like");
  4. var is_array_like_1 = require("./is-array-like");
  5. var is_string_1 = require("./is-string");
  6. var isEqual = function (value, other) {
  7. if (value === other) {
  8. return true;
  9. }
  10. if (!value || !other) {
  11. return false;
  12. }
  13. if (is_string_1.default(value) || is_string_1.default(other)) {
  14. return false;
  15. }
  16. if (is_array_like_1.default(value) || is_array_like_1.default(other)) {
  17. if (value.length !== other.length) {
  18. return false;
  19. }
  20. var rst = true;
  21. for (var i = 0; i < value.length; i++) {
  22. rst = isEqual(value[i], other[i]);
  23. if (!rst) {
  24. break;
  25. }
  26. }
  27. return rst;
  28. }
  29. if (is_object_like_1.default(value) || is_object_like_1.default(other)) {
  30. var valueKeys = Object.keys(value);
  31. var otherKeys = Object.keys(other);
  32. if (valueKeys.length !== otherKeys.length) {
  33. return false;
  34. }
  35. var rst = true;
  36. for (var i = 0; i < valueKeys.length; i++) {
  37. rst = isEqual(value[valueKeys[i]], other[valueKeys[i]]);
  38. if (!rst) {
  39. break;
  40. }
  41. }
  42. return rst;
  43. }
  44. return false;
  45. };
  46. exports.default = isEqual;
  47. //# sourceMappingURL=is-equal.js.map