Skip to content

Instantly share code, notes, and snippets.

@DanisHack
Created June 9, 2014 12:34
Show Gist options
  • Save DanisHack/f0bfeea7862f8a547534 to your computer and use it in GitHub Desktop.
Save DanisHack/f0bfeea7862f8a547534 to your computer and use it in GitHub Desktop.
Merging two objects in javascript
var aggregateData = function(wb, rb){
for(var k in rb) { //
if(Object.prototype.toString.call(rb[k]) == '[object Object]'){
if(wb.hasOwnProperty(k)){
var ob1 = wb[k];
var ob2 = rb[k];
/*console.log("IF", ob1, ob2);*/
if(Object.keys(ob1).length > 0 || ob1!=null){
aggregateData(ob1, ob2, -1, function(err, result){
if(err){
console.log(err);
}
else{
//console.log("merge result:", result);
}
});
}
else{
//console.log(Object.keys(ob1).length, Object.keys(ob2).length);
}
}
else{
console.log("ELSE");
wb[k] = rb[k];
}
}
else if(Object.prototype.toString.call(rb[k]) == '[object Array]'){
if(wb[k]){
wb[k] = wb[k].concat(rb[k]);
}
else{
wb[k] = rb[k];
}
}
else{
if(wb[k]){
wb[k] = wb[k] + rb[k];
}
else{
wb[k] = rb[k];
}
}
}
if(i>0){
if(r.length > i+1){
console.log("****moving to next obj****");
aggregateData(wb, r, i+1, function(err, result){
if(err){
callback(err, null);
}
else{
callback(null, result);
}
});
}
else{
//console.log("weekly obj:", wb);
callback(null, wb);
}
}
else{
callback(null, wb);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment