remx
Version:
Opinionated mobx
22 lines (21 loc) • 728 B
JavaScript
Object.defineProperty(exports,"__esModule",{value:true});exports.default=mergeWith;function mergeWith(object){for(var _len=arguments.length,sources=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){sources[_key-1]=arguments[_key];}
var mergeCustomizer=sources.pop();
sources.forEach(function(source){
if(!source||typeof source!=='object'){
return;
}
for(var key in source){
var objValue=object[key];
var srcValue=source[key];
var value=mergeCustomizer(objValue,srcValue,key,object,source);
if(value!==undefined){
object[key]=value;
}else if(objValue&&typeof objValue==='object'&&srcValue&&typeof srcValue==='object'){
object[key]=mergeWith(objValue,srcValue,mergeCustomizer);
}else{
object[key]=srcValue;
}
}
});
return object;
}