1 | import isArray from './is-array';
|
2 | import isPlainObject from './is-plain-object';
|
3 | var MAX_MIX_LEVEL = 5;
|
4 | function _deepMix(dist, src, level, maxLevel) {
|
5 | level = level || 0;
|
6 | maxLevel = maxLevel || MAX_MIX_LEVEL;
|
7 | for (var key in src) {
|
8 | if (src.hasOwnProperty(key)) {
|
9 | var value = src[key];
|
10 | if (value !== null && isPlainObject(value)) {
|
11 | if (!isPlainObject(dist[key])) {
|
12 | dist[key] = {};
|
13 | }
|
14 | if (level < maxLevel) {
|
15 | _deepMix(dist[key], value, level + 1, maxLevel);
|
16 | }
|
17 | else {
|
18 | dist[key] = src[key];
|
19 | }
|
20 | }
|
21 | else if (isArray(value)) {
|
22 | dist[key] = [];
|
23 | dist[key] = dist[key].concat(value);
|
24 | }
|
25 | else if (value !== undefined) {
|
26 | dist[key] = value;
|
27 | }
|
28 | }
|
29 | }
|
30 | }
|
31 |
|
32 | var deepMix = function (rst) {
|
33 | var args = [];
|
34 | for (var _i = 1; _i < arguments.length; _i++) {
|
35 | args[_i - 1] = arguments[_i];
|
36 | }
|
37 | for (var i = 0; i < args.length; i += 1) {
|
38 | _deepMix(rst, args[i]);
|
39 | }
|
40 | return rst;
|
41 | };
|
42 | export default deepMix;
|
43 |
|
\ | No newline at end of file |