deep-mix.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var is_array_1 = require("./is-array");
  4. var is_plain_object_1 = require("./is-plain-object");
  5. var MAX_MIX_LEVEL = 5;
  6. function _deepMix(dist, src, level, maxLevel) {
  7. level = level || 0;
  8. maxLevel = maxLevel || MAX_MIX_LEVEL;
  9. for (var key in src) {
  10. if (src.hasOwnProperty(key)) {
  11. var value = src[key];
  12. if (value !== null && is_plain_object_1.default(value)) {
  13. if (!is_plain_object_1.default(dist[key])) {
  14. dist[key] = {};
  15. }
  16. if (level < maxLevel) {
  17. _deepMix(dist[key], value, level + 1, maxLevel);
  18. }
  19. else {
  20. dist[key] = src[key];
  21. }
  22. }
  23. else if (is_array_1.default(value)) {
  24. dist[key] = [];
  25. dist[key] = dist[key].concat(value);
  26. }
  27. else if (value !== undefined) {
  28. dist[key] = value;
  29. }
  30. }
  31. }
  32. }
  33. // todo 重写
  34. var deepMix = function (rst) {
  35. var args = [];
  36. for (var _i = 1; _i < arguments.length; _i++) {
  37. args[_i - 1] = arguments[_i];
  38. }
  39. for (var i = 0; i < args.length; i += 1) {
  40. _deepMix(rst, args[i]);
  41. }
  42. return rst;
  43. };
  44. exports.default = deepMix;
  45. //# sourceMappingURL=deep-mix.js.map