I need to take two arrays of separate arrays of objects and map it to a new array of objects. I just can't seem to figure it out in ES6. I know I need to map through the first array and reduce on the second array but I am getting lost. I included a snippet, which fails on the reduce at Combined: acc[i].Combined.push(name.SId),
two arrays:
Array 1
[
{
"BId": 1,
"Name": "Test1",
},
{
"BId": 2,
"Name": "Test2",
}
]
Array 2
[
{
"Id": 1,
"BId": 1,
"SId": 2,
"GId": 1
},
{
"Id": 2,
"BId": 1,
"SId": 2,
"GId": 2
},
{
"Id": 3,
"BId": 1,
"SId": 3,
"GId": 1
},
{
"Id": 1,
"BId": 2,
"SId": 2,
"GId": 1
},
{
"Id": 2,
"BId": 2,
"SId": 2,
"GId": 2
},
{
"Id": 3,
"BId": 2,
"SId": 3,
"GId": 1
},
{
"Id": 3,
"BId": 2,
"SId": 3,
"GId": 4
},
]
result:
[
{
"BId": 1,
"Name": Test1,
"Combined": [{SId:2, GIds[1,2]}, {SId:3, GIds[1]}]
}
{
"BId": 2,
"Name": Test2,
"Combined": [{SId:2, GIds[1,2]}, {SId:3, GIds[1,4]}]
}
]
const array1 = [
{"BId": 1,
"Name": "Test1",
},
{
"BId": 2,
"Name": "Test2",
}
];
const array2 = [
{
"Id": 1,
"BId": 1,
"SId": 2,
"GId": 1
},
{
"Id": 2,
"BId": 1,
"SId": 2,
"GId": 2
},
{
"Id": 3,
"BId": 1,
"SId": 3,
"GId": 1
},
{
"Id": 1,
"BId": 2,
"SId": 2,
"GId": 1
},
{
"Id": 2,
"BId": 2,
"SId": 2,
"GId": 2
},
{
"Id": 3,
"BId": 2,
"SId": 3,
"GId": 1
},
{
"Id": 3,
"BId": 2,
"SId": 3,
"GId": 4
},
];
const all = array1.map(a1 => {
combined = array2
.filter(a2 => a2.BId === a1.BId)
.reduce((acc, name, i) => {
const obj = {
BId: name.BId,
Name: name.Name,
Combined: acc[i].Combined.push(name.SId),
};
acc.push(obj);
return acc;
}, []);
return bv;
});