1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| function shallowMerge(obj1, obj2){ var isPlain1 = isPlainObject(obj1); var isPlain2 = isPlainObject(obj2); if(!isPlain1) return obj2; if(!isPlain2) return obj1; let keys = [ ...Object.keys(obj2), ...Object.getOwnPropertySymbols(obj2) ] keys.forEach(function(key){ obj1[key] = obj2[key]; }); return obj1; }
function deepMerge(obj1, obj2, cache){ cache = Array.isArray(cache) ? cache: []; if(cache.indexOf(obj2)>-1) return obj2; cache.push(obj2);
var isPlain1 = isPlainObject(obj1); var isPlain2 = isPlainObject(obj2); if(!isPlain1 || !isPlain2) return shallowMerge(obj1, obj2); let keys = [ ...Object.keys(obj2), ...Object.getOwnPropertySymbols(obj2) ] keys.forEach(function(key){ obj1[key] = deepMerge(obj1[key], obj2[key], cache); }); return obj1; }
|