Need help to get output from input JS merge objects as below out
const input = {
"data1": [
{
"name": "name1",
"type": "data1",
"count": 7,
},
{
"name": "name2",
"type": "data1",
"count": 3,
},
{
"name": "name4",
"type": "data1",
"count": 1,
}
],
"data2": [
{
"name": "name1",
"type": "data2",
"count": 3
},
{
"name": "name2",
"type": "machine",
"count": 4
},
],
"data3": [
{
"name": "name1",
"type": "data3",
"count": 9
},
{
"name": "name2",
"type": "data3",
"count": 1
},
{
"name": "name3",
"type": "data3",
"count": 5
},
{
"name": "name4",
"type": "data3",
"count": 2
}
]
}
const output = [
{
"name": "name1",
"data1": 7,
"data2": 3,
"data3": 9
},
{
"name": "name2",
"data1": 3,
"data2": 4,
"data3": 1
},
{
"name": "name3",
"data1": 0,
"data2": 0,
"data3": 5
},
{
"name": "name4",
"data1": 1,
"data2": 0,
"data3": 2
},
]
I hope I understood your meaning correctly
const input = {
"data1": [
{
"name": "name1",
"type": "data1",
"count": 7,
},
{
"name": "name2",
"type": "data1",
"count": 3,
},
{
"name": "name4",
"type": "data1",
"count": 1,
}
],
"data2": [
{
"name": "name1",
"type": "data2",
"count": 3
},
{
"name": "name2",
"type": "machine",
"count": 4
},
],
"data3": [
{
"name": "name1",
"type": "data3",
"count": 9
},
{
"name": "name2",
"type": "data3",
"count": 1
},
{
"name": "name3",
"type": "data3",
"count": 5
},
{
"name": "name4",
"type": "data3",
"count": 2
}
]
}
const concatObj = []
for (const object in input) {
if (Array.isArray(input[object]) === true) {
input[object].map(x => {
concatObj.push(x)
})
}
}
console.log(concatObj);
you can do something like this
const transform = data => Object.values(Object.entries(data)
.reduce((res, [type, data]) => {
data.forEach(({name, count}) => {
res[name] = Object.assign({}, res[name] || {name}, {[type]: count})
})
return res
}, {}))
const input = {
"data1": [{
"name": "name1",
"type": "data1",
"count": 7,
},
{
"name": "name2",
"type": "data1",
"count": 3,
},
{
"name": "name4",
"type": "data1",
"count": 1,
}
],
"data2": [{
"name": "name1",
"type": "data2",
"count": 3
},
{
"name": "name2",
"type": "machine",
"count": 4
},
],
"data3": [{
"name": "name1",
"type": "data3",
"count": 9
},
{
"name": "name2",
"type": "data3",
"count": 1
},
{
"name": "name3",
"type": "data3",
"count": 5
},
{
"name": "name4",
"type": "data3",
"count": 2
}
]
}
console.log(transform(input))