Object Array Merge
by jpwo759
JavaScript
function mergeObjArrays(list1, list2) {
var mergedList = [],
i = 0,
j = 0,
k = 0,
l1 = list1.length,
l2 = list2.length,
listMatchFound = false,
mergedObj,
mergeMatchFound = false;
for (; i < l1; i++) {
for (j = 0; j < l2; j++) {
if (list1[i].id === list2[j].id) {
listMatchFound = true;
mergedObj = mergeObj(list1[i], list2[j]);
for (k = 0; k < mergedList.length; k++) {
if (mergedList[k].id === mergedObj.id) {
mergedObj = mergeObj(mergedList[k], mergedObj);
mergedList[k] = mergedObj;
mergeMatchFound = true;
break;
}
}
if (!mergeMatchFound) {
mergedList.push(mergedObj);
} else {
mergeMatchFound = false; //reset ready for another iteration
}
}
}
if (!listMatchFound) {
mergedList.push(list1[i]);
} else {
listMatchFound = false; //reset ready for another iteration
}
}
return mergedList;
function mergeObj(obj1, obj2) {
for (var o in obj1) {
obj2[o] = obj1[o];
}
return obj2;
}
}
var a = [{
"id": 1,
"name": "yadda",
"description": "yadda yadda"
}, {
"id": 2,
"name": "yadda1",
"description": "yadda yadda1"
}, {
"id": 7,
"name": "yadda2",
"description": "yadda yadda2"
}, {
"id": 10,
"name": "yadda3",
"description": "yadda yadda3"
}];
var b = [{
"id": 7,
"icon": "icon3.gif"
}, {
"id": 10,
"icon": "icon4.gif"
}, {
"id": 2,
"icon": "icon2.gif"
}, {
"id": 2,
"title": "Number 2 title"
}, {
"id": 1,
"icon": "icon1.gif"
}];
//used like
var result =...