I am currently having difficulties filtering and joining 2 data sets based on various conditions.
The data I am receiving is like so
const ob = {
"dataOne": [
{
"type": "Type 1",
"name": "failed"
},
{
"type": "Type 1",
"name": "success"
},
{
"type": "Type 2",
"name": "success"
},
{
"type": "Type 3",
"name": "success"
},
],
"dataTwo": [
{
"type": "Type 1",
"name": "click",
},
{
"type": "Type 2",
"name": "click",
},
{
"type": "Type 2",
"name": "click",
},
{
"type": "Type 1",
"name": "click",
},
{
"type": "Type 3",
"name": "click",
},
]
};
The result I am after is like so
{
"type 1" : [
{
"count": 2
"success": 1
"failed": 1
"clicks": 2
}
],
"type 2" : [
{
"count": 1
"success": 1
"failed": 0
"clicks": 2
}
],
"type 3" : [
{
"count": 1
"success": 1
"failed": 0
"clicks": 1
}
]
}
So what I am essentially aiming to do is get the unique types from dataOne. I then need the total count of occurrences for each type. Then, I need to know for each type the total count of success and failed.
Then from dataTwo I need to include the number of clicks for each type.
To start things off (not sure if I am going in the right direction here), I have done
const result = ob.dataOne.reduce( (acc, o) => (acc[o.type] = (acc[o.type] || 0)+1, acc), {} );
This will give me the total counts for each type. However, I am not sure how to check the success and failed and format it like above.
Any advice appreciated. I started a JSFiddle
Thanks