I want to create an (output) array of objects from one or multiple other (input) arrays.
For two input arrays defined as:
var array1 = [
{ id: 1, name: 'a1'},
{ id: 2, name: 'a2'},
{ id: 3, name: 'a3'},
{ id: 4, name: 'a4'},
{ id: 5, name: 'a5'},
];
var array2 = [
{ id: 1, name: 'a1', sub: { data: 'we' } },
{ id: 2, name: 'a2', sub: { data: 'dfd' } },
{ id: 5, name: 'a5', sub: { data: 'vbf' } },
];
...the resulting (output) array should be:
var newarray = [
{ id: 1, name: 'a1', sub: { data: 'we' } },
{ id: 2, name: 'a2', sub: { data: 'dfd' } },
{ id: 3, name: 'a3', sub: {}},
{ id: 4, name: 'a4', sub: {}},
{ id: 5, name: 'a5', sub: { data: 'vbf' } },
];
I have tried the following but there is a mistake there somewhere:
var newarray = [];
var oArray = {};
for(var i = 0; i <= array1.length;) {
for(var j = 0; j <= array2.length; j++) {
if(array1[i].id === array2[j].id) {
oArray = {
"id": array1[i].id,
"name": array1[i].name,
"sub": array1[i].sub
};
newarray.push(oArray);
i++;
break;
} else {
oArray = {
"id": array1[i].id,
"name": array1[i].name,
"sub": array1[i].sub
};
newarray.push(oArray);
}
}
}