deep-assign.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.deepAssign = void 0;
  4. var tslib_1 = require("tslib");
  5. var util_1 = require("@antv/util");
  6. var MAX_MIX_LEVEL = 5;
  7. var deep = function (dist, src, level, maxLevel) {
  8. if (level === void 0) { level = 0; }
  9. if (maxLevel === void 0) { maxLevel = MAX_MIX_LEVEL; }
  10. Object.entries(src).forEach(function (_a) {
  11. var _b = tslib_1.__read(_a, 2), key = _b[0], value = _b[1];
  12. var res = dist;
  13. if (Object.prototype.hasOwnProperty.call(src, key)) {
  14. if (!value) {
  15. // null 、 undefined 等情况直接赋值
  16. res[key] = value;
  17. }
  18. else if ((0, util_1.isPlainObject)(value)) {
  19. if (!(0, util_1.isPlainObject)(dist[key])) {
  20. res[key] = {};
  21. }
  22. if (level < maxLevel) {
  23. deep(dist[key], value, level + 1, maxLevel);
  24. }
  25. else {
  26. // 层级过深直接赋值,性能问题
  27. res[key] = src[key];
  28. }
  29. }
  30. else if ((0, util_1.isArray)(value)) {
  31. res[key] = [];
  32. res[key] = res[key].concat(value);
  33. }
  34. else {
  35. res[key] = value;
  36. }
  37. }
  38. });
  39. };
  40. var deepAssign = function (rst) {
  41. var args = [];
  42. for (var _i = 1; _i < arguments.length; _i++) {
  43. args[_i - 1] = arguments[_i];
  44. }
  45. for (var i = 0; i < args.length; i += 1) {
  46. deep(rst, args[i]);
  47. }
  48. return rst;
  49. };
  50. exports.deepAssign = deepAssign;
  51. //# sourceMappingURL=deep-assign.js.map