JSFiddle - React, Tailwind, and code Playground
JavaScript
var obj1 = { data: [
{id:1, comment:"comment1"},
{id:2, comment:"comment2"},
{id:3, comment:"comment3"}
] };
var obj2 = { data: [
{id:2, comment:"comment2"},
{id:3, comment:"comment3"},
{id:4, comment:"comment4"}
] };
function merge(one, two){
if (!one.data) return {data:two.data};
if (!two.data) return {data:one.data};
var final = {data:one.data};
// merge
for(var i = 0 ; i < two.data.length;i++){
var item = two.data[i];
insert(item, final);
}
return final;
}
function insert(item, obj){
var data = obj.data;
var insertIndex = data.length;
for(var i = 0; i < data.length; i++){
if(item.id == data[i].id){
// ignore duplicates
insertIndex = -1;
break;
} else if(item.id < data[i].id){
insertIndex = i;
break;
}
}
if(insertIndex == data.length){
data.push(item);
} else if(insertIndex != -1) {
data.splice(insertIndex,0,item);
}
}
var final = merge(obj1, obj2);
$('#o').append("\n\n\nUsing merge()\n");
$('#o').append( JSON.stringify(final, undefined, 2) );