blob: 81d2d18f763fd0c2588eeb9fa8b0d38d8b2d7569 [file] [log] [blame]
guangchao.xu070005a2020-12-07 09:56:40 +08001import deepClone from "./deepClone";
2
3// JS对象深度合并
4function deepMerge(target = {}, source = {}) {
5 target = deepClone(target);
6 if (typeof target !== 'object' || typeof source !== 'object') return false;
7 for (var prop in source) {
8 if (!source.hasOwnProperty(prop)) continue;
9 if (prop in target) {
10 if (typeof target[prop] !== 'object') {
11 target[prop] = source[prop];
12 } else {
13 if (typeof source[prop] !== 'object') {
14 target[prop] = source[prop];
15 } else {
16 if (target[prop].concat && source[prop].concat) {
17 target[prop] = target[prop].concat(source[prop]);
18 } else {
19 target[prop] = deepMerge(target[prop], source[prop]);
20 }
21 }
22 }
23 } else {
24 target[prop] = source[prop];
25 }
26 }
27 return target;
28}
29
30export default deepMerge;