deep-assign.js 1.5 KB

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